2015-10-01 57 views
-4

我已經定義了Dictionary如下:更新字典值字段通過循環

Dictionary<string, double> collection = new Dictionary<string, double>(); 

現在我想更新我的價值:

foreach (KeyValuePair<string, double> pair int collection) 
{ 
    double val = 3.0; 
    collection[pair.Value] = val; // Get an error 
} 

我的錯誤是無法從雙轉換爲字符串。 這是爲什麼?

+2

不會編譯'int'應該是'in' – fubo

回答

2

你不能迭代一個Dictionary和改變內部價值,因爲它會打破迭代器。

你需要複製的集合,並修改複製的版本...下面的例子:

Dictionary<string, double> collection = new Dictionary<string, double>(); 
collection.Add("A", 1.0); 
collection.Add("B", 2.0); 

Dictionary<string, double> collection2 = new Dictionary<string, double>(collection); 

foreach (KeyValuePair<string, double> pair in collection) 
{ 
    double val = 3.0;    
    collection2.Remove(pair.Key); 
    collection2.Add(pair.Key, val); 
} 
0

試試這個

Dictionary<string, double> Copycollection= new Dictionary<string, double> (collections); 
      foreach (KeyValuePair<string, double> pair in Copycollection) 
      { 
       double val = 3.0; 
       collection[pair.Key] = val; 
      } 
+1

因爲你這樣可不行在枚舉過程中不允許更改集合。請參閱[相關](http://stackoverflow.com/q/2260446/1997232)問題。 – Sinatr

+0

@Sinatr updated.thx – Arash