如何更改Dictionary <string,bool =“”>?</string,>中的所有值

时间:2011-05-27 04:20:35

标签: c# linq loops dictionary enumeration

所以我有一个Dictionary<string, bool>,我想做的就是迭代它并在字典中将所有值设置为false。最简单的方法是什么?

我试过了:

foreach (string key in parameterDictionary.Keys)
    parameterDictionary[key] = false;

但是我收到错误:“收集已被修改;枚举操作可能无法执行。”

有更好的方法吗?

2 个答案:

答案 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;
}