dictionray<string,string> dic=new dictionray<string,string>();
修改某个键的值同时,我用foreach(string s in dic.keys) 循环操作 ,程序报出如题式的异常。请问该如何处理啊?

解决方案 »

  1.   

    把foreach(string s in dic.keys)
    改成foreach(string s in new List<string>(dic.keys))
      

  2.   

    在foreach 中记录下符合更改条件的 index 出foreach 在对每个index进行操作
      注意 要执行remove操作的时候要从大index到小index执行  
      

  3.   

    不要再foreach里面改变List的元素,比如add和remove
      

  4.   

    依据?就是重新构建了一个string的List,里面存的是那些key。遍历的时候就会从这个List里面去取这些key的值,而不是从dic.Keys里面取,这样就躲过了遍历Keys的过程中对Dictionary对是否进行了修改的判断,所以就不会抛异常了
      

  5.   

    dictionray <string,string> dic=new dictionray <string,string>();
    for(int i = 0;i < dic.keys.Count;i++)
    {
      //逻辑代码
    }
      

  6.   

    总结一下
    方法1:
    把foreach(string s in dic.keys) 
    改成foreach(string s in new List <string>(dic.keys))
    方法2:
    dictionray <string,string> dic=new dictionray <string,string>();
    for(int i = 0;i < dic.keys.Count;i++)
    {
       //逻辑代码
    }个人觉得还是第一种方法靠谱,更好一些!但是new了一个新的,占用资源,第二种方法,可能效率上差一些