我具有空值的變量中一個巨大的字典稱爲當前像這樣:約在C#修改詞典希望簡單的問題
struct movieuser {blah blah blah}
Dictionary<movieuser, float> questions = new Dictionary<movieuser, float>();
因此,我通過這本詞典循環,需要填寫「答案」 ,像這樣:
for(var k = questions.Keys.GetEnumerator();k.MoveNext();)
{
questions[k.Current] = retrieveGuess(k.Current.userID, k.Current.movieID);
}
現在,這是不行的,因爲我是從試圖修改我循環通過字典得到一個InvalidOperationException。但是,您可以看到代碼應該正常工作 - 因爲我不添加或刪除任何值,只是修改該值。不過,我明白爲什麼它害怕我嘗試這個。
這樣做的首選方式是什麼?我無法找出一種方法來循環使用字典而不使用迭代器。
我真的不想創建整個數組的副本,因爲它是大量的數據,並會像我的感恩節一樣吃掉我的內存。
謝謝, 戴夫
想過更多之後,我不能編輯值的原因是因爲字典將它存儲在某種不斷變化的二叉樹或其他東西中?在這種情況下,如果你改變了值,它可能會改變列表的順序,與迭代器搞砸...... – 2008-11-29 07:10:45
在這種情況下,我認爲有必要創建一個臨時數組鍵......但我仍然不相信這是事實。 – 2008-11-29 07:11:47