【问题标题】:How to change all values in a Dictionary<string, bool>?如何更改 Dictionary<string, bool> 中的所有值?
【发布时间】:2011-09-03 02:50:29
【问题描述】:

所以我有一个Dictionary&lt;string, bool&gt;,我想做的就是遍历它并将字典中的所有值设置为 false。最简单的方法是什么?

我试过了:

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

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

有没有更好的方法来做到这一点?

【问题讨论】:

    标签: c# linq loops dictionary enumeration


    【解决方案1】:

    只需将枚举源更改为字典以外的其他内容。

    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;
    

    【讨论】:

    • 呸,事情总是那么简单。呃;一定很晚了。谢谢!我会在 12 分钟内接受 :)
    • 不幸的是,如果后台线程正在添加密钥,这样做是不安全的。
    • @kami ToList 是在 System.Linq.Enumerable 上定义的扩展方法,即 .net 3.5。您需要找到另一种方法来创建额外的集合以用作枚举源。
    【解决方案2】:

    在 .net 5 中,以下 sn-p 不再抛出:

    var d = new Dictionary<string, int> { { "a", 0 }, { "b", 0 }, { "c", 0 }};
    
    foreach (var k in d.Keys){
          d[k] = 1;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-18
      • 1970-01-01
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      • 2020-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多