Dictionary 集合已修改,可能无法执行枚举操作。
场景:操作Dictionary,报“集合已修改;可能无法执行枚举操作。”,该如何处理
操作Dictionary,报“集合已修改;可能无法执行枚举操作。”
定义一个简单的Dictionary,遍历修改值时,在foreach中第二次进入时就报错:“集合已修改;可能无法执行枚举操作。”
代码如下:
Dictionary<int, bool> dic = new Dictionary<int, bool>();
for(int i=0;i<10;i++)
{
dic.Add(i, false);
}
foreach (int i in dic.Keys)
{
dic[i] = false;
}
请问这是为何,难道不能更改dic[i]的值吗?如果要改,如何改?
------解决方案--------------------
foreach (int i in dic.Keys)
改为
foreach (int i in dic.Keys.ToArry())
这样就不会产生异常了。
------解决方案--------------------
操作Dictionary,报“集合已修改;可能无法执行枚举操作。”
定义一个简单的Dictionary,遍历修改值时,在foreach中第二次进入时就报错:“集合已修改;可能无法执行枚举操作。”
代码如下:
Dictionary<int, bool> dic = new Dictionary<int, bool>();
for(int i=0;i<10;i++)
{
dic.Add(i, false);
}
foreach (int i in dic.Keys)
{
dic[i] = false;
}
请问这是为何,难道不能更改dic[i]的值吗?如果要改,如何改?
------解决方案--------------------
foreach (int i in dic.Keys)
改为
foreach (int i in dic.Keys.ToArry())
这样就不会产生异常了。
------解决方案--------------------
var dic = new Dictionary<int, bool>();
for (var i = 0; i < 10; i++)
{
dic.Add(i, false);
}
foreach (var i in dic.Keys.ToArray())
{
dic[i] = false;
}