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())
这样就不会产生异常了。
------解决方案--------------------
      
 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;
            }