Dictionary<string, List<string[]>> Msg = new Dictionary<string, List<string[]>>();
int i=0;
foreach (string abc in Msg.Keys)
{
changeMsg.Add(i.ToString(), msg);
i++;
}
此时运行就会出现“集合已修改;可能无法执行枚举操作。”的错误提示。
因为Dictionary的key和value如果修改便会提示集合已修改,可能无法执行枚举操作。所以一般value如果为类的对象,更改value的成员是没有问题的,但如果为值类型,修改相当于把装箱的对象替换了。
debug会发现,当循环最后一步执行完add方法以后,会再执行一次循环,因为增加了 Dictionary中存储的个数。
解决这个问题就是在执行完add以后通过一个break跳出即可。
Dictionary<string, List<string[]>> Msg = new Dictionary<string, List<string[]>>();
int i=0;
foreach (string abc in Msg.Keys)
{
changeMsg.Add(i.ToString(), msg);
i++;
break;
}