Che*_*hev 6 c# linq dictionary loops enumeration
所以我有一个Dictionary<string, bool>,我想做的就是迭代它并在字典中将所有值设置为false.最简单的方法是什么?
我试过这个:
foreach (string key in parameterDictionary.Keys)
parameterDictionary[key] = false;
Run Code Online (Sandbox Code Playgroud)
但是我收到错误:"收集已被修改;枚举操作可能无法执行."
有一个更好的方法吗?
Amy*_*y B 17
只需将枚举源更改为字典以外的其他内容即可.
foreach (string key in parameterDictionary.Keys.ToList())
parameterDictionary[key] = false;
Run Code Online (Sandbox Code Playgroud)
对于.net 2.0
foreach (string key in new List<TKey>(parameterDictionary.Keys))
parameterDictionary[key] = false;
Run Code Online (Sandbox Code Playgroud)
在 .NET 5 中,以下代码片段不再抛出异常:
var d = new Dictionary<string, int> { { "a", 0 }, { "b", 0 }, { "c", 0 }};
foreach (var k in d.Keys){
d[k] = 1;
}
Run Code Online (Sandbox Code Playgroud)