我有一本字典:如何在迭代字典項目時更新值?
Dictionary<string, long> Reps = new Dictionary<string, long>();
,我要更新的值,而通過全項迭代,就像這樣:
foreach (string key in Reps.keys)
{
Reps[key] = 0;
}
它給我一個錯誤說:
"Collection was modified; enumeration operation may not execute"
任何人都可以告訴我爲什麼它給了我這個錯誤,因爲我有一個更多的功能,增加了價值,它被點擊按鈕時調用:
public static void Increment(string RepId, int amount)
{
long _value = Convert.ToInt64(Reps[RepId]);
_value = _value + amount;
Reps[RepId] = _value;
}
這個函數工作正常。那麼更新所有值時會出現什麼問題?而這是什麼解決方案?
它的工作呢,但是你只有一個人回答我的部分questi即解決方案...你能解釋一下錯誤的原因嗎? –
嗯,我猜是因爲foreach是基於集合的,如果你想改變集合,那麼foreach是如何確定哪些部分需要處理的?哪些不是?例如。如果你在迭代期間添加一個新的Reps [x],你會期望它參與到foreach中嗎? – Pleun