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