【发布时间】:2008-11-29 07:00:08
【问题描述】:
我在一个名为 current 的变量中有一个巨大的空白值字典,如下所示:
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。但是,您可以看到代码应该可以正常工作 - 因为我没有添加或删除任何值,只是修改值。不过,我明白为什么它害怕我尝试这样做。
这样做的首选方法是什么?我想不出不使用迭代器来循环遍历字典的方法。
我真的不想创建整个数组的副本,因为它包含大量数据并且会像感恩节一样吃掉我的内存。
谢谢, 戴夫
【问题讨论】:
-
经过深思熟虑,是不是因为字典将其存储在某种不断变化的二叉树或其他东西中,所以我无法编辑这些值?在这种情况下,如果您更改了值,它可能会更改列表的顺序,从而与迭代器发生冲突...
-
在这种情况下,我想我必须创建一个临时键数组是有道理的......但我仍然不相信这是这种情况。
标签: c# .net dictionary