解决方案 »

  1.   

     foreach (int i in dic.Keys)
    改为
     foreach (int i in dic.Keys.ToArry())
    这样就不会产生异常了。
      

  2.   

          
     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;
                }
      

  3.   

    找到原因了:Dictionary的key和value都是只读的 如果修改便会提示集合已修改,可能无法执行枚举操作。所以一般value如果为类的对象,更改value的成员是没有问题的,但如果为值类型,修改相当于把装箱的对象替换了。楼上的两位给的代码编译通不过,没有keycollection没有ToArray方法,不过思路是可以的。