foreach (string key in ht.Keys)
{
if(Convert.ToInt32(ht[key])==1) //这个结果导致 所有为1的主键 都被循环了。 当然导致了后边的程序错乱问题。
{
colorno_use = key;
ht[key] = 0;
++i;
break;
}
}
于是我改进了一下: 加了一个i 限制判断循环的条件 结果正常了:
int i=0;
foreach (string key in ht.Keys)
{
if(Convert.ToInt32(hashtable[key])==1&&i==0)
{
colorno_use = key;
hashtable[key] = 0;
++i;
break;
}
}
更简便的方法就是本来想把大括弧去掉 :if没有大括弧下边有两句以上是运行一次,进入下一条语句。结果呢在此处不合适,调试了一下,因为foreach 管辖范围广,导致if 执行之后又进入了forech 然后又是if ,在此还是上边加限制的方法最为合适。
ht.Add("PaleTurquoise", 1);
ht.Add("Aqua", 1);
ht.Add("CornflowerBlue", 1);
ht.Add("Yellow", 1);
ht.Add("Chocolate", 1);
ht.Add("RosyBrown", 1);
ht.Add("Orange", 1);
ht.Add("LightGray", 1);
ht.Add("LimeGreen", 1);
ht.Add("Magenta", 1);
ht.Add("DarkSalmon", 1);
foreach (DictionaryEntry key in ht)
if (Convert.ToInt32(key.Value) == 1)
return key.Key;
return null;