所以我有一个Dictionary<string, bool>
,我想做的就是迭代它并在字典中将所有值设置为false。最简单的方法是什么?
我试过了:
foreach (string key in parameterDictionary.Keys)
parameterDictionary[key] = false;
但是我收到错误:“收集已被修改;枚举操作可能无法执行。”
有更好的方法吗?
答案 0 :(得分:17)
只需将枚举源更改为字典以外的其他内容即可。
foreach (string key in parameterDictionary.Keys.ToList())
parameterDictionary[key] = false;
对于.net 2.0
foreach (string key in new List<TKey>(parameterDictionary.Keys))
parameterDictionary[key] = false;
答案 1 :(得分:1)
在 .net 5 中,以下代码段不再抛出:
var d = new Dictionary<string, int> { { "a", 0 }, { "b", 0 }, { "c", 0 }};
foreach (var k in d.Keys){
d[k] = 1;
}