所以我有一个
Dictionary<string, bool>
,我想做的就是迭代它并将字典中的所有值设置为 false。最简单的方法是什么?
我试过这个:
foreach (string key in parameterDictionary.Keys)
parameterDictionary[key] = false;
但是我收到错误:“集合已修改;枚举操作可能无法执行。”
有更好的方法吗?
只需将枚举源更改为字典以外的其他内容即可。
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;
在 .net 5 中,以下代码片段不再抛出:
var d = new Dictionary<string, int> { { "a", 0 }, { "b", 0 }, { "c", 0 }};
foreach (var k in d.Keys){
d[k] = 1;
}
有时您在使用
foreach
和 .ForEach
循环时会遇到这个问题。使用 for 循环允许您使用字典自己的键集合:
var keys = this.parameterDictionary.Keys.ToList();
for(int i = 0; i < keys.Count; ++i) {
this.parameterDictionary[keys[i]] = false;
}