C# DIctionary:集合已修改,可能無法執行枚舉操作


     C#中直接對集合Dictionary進行遍歷並修改其中的值,會報錯,如下代碼就會報錯:集合已修改;可能無法執行枚舉操作。代碼如下

public void ForeachDic()     
{     
     Dictionary<String, Int32> dic = new Dictionary<String, Int32>();   
     dic.Add("1", 10);     
     dic.Add("2", 20);     
     dic.Add("3", 30);     
     foreach (KeyValuePair<String, Int32> kvp in dic)     
     {     
         Console.WriteLine(String.Format("Key:{0}; Value:{1}", kvp.Key, kvp.Value));     
         dic[kvp.Key] = 100;//此操作會報錯:集合已修改;可能無法執行枚舉操作。    
     }     
}    

 

       解決方法就是我們可以另外創建一個數組來循環修改集合值,代碼如下:

private void ForeachDic()     
{     
     Dictionary<String, Int32> dic = new Dictionary<String, Int32>();   
     dic.Add("1", 10);     
     dic.Add("2", 20);     
     dic.Add("3", 30);    
     String[] keyArr = dic.Keys.ToArray<String>();     
     for (int i = 0; i < keyArr.Length; i++)     
     {     
         dic[keyStr[i]] = dic[keyStr[i]] + 1;     
      }     
}   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM