Why is it necessary to temporarily save keys to a list when iterating over a dictionary's items and modifying their values?
本问题已经有最佳答案,请猛点这里访问。
从这个答案:
1 2 3 4 | foreach (var key in dict.Keys.ToList()) { dict[key] = false; } |
The call to ToList() makes this work, since it's pulling out and (temporarily) saving the list of keys, so the iteration works.
号
为什么有必要打电话给
我们修改的是值,而不是键,据我所知,只有修改字典的键集才能打破键的迭代。特别是,对我来说,可能是理解错误——只有在我们在字典中添加或删除项目时,键的顺序才能改变,而我们没有这样做。
如果您读取
字典有内部版本号。
在字典中设置值将更新其版本号,其效果与在foreach循环中修改枚举集合的效果相同。