在C#Dictionary <string,bool>中设置所有值的最佳方法是什么?

Ron*_*rby 30 .net c# generics dictionary

在C#字典中设置所有值的最佳方法是什么?

这是我现在正在做的事情,但我确信有更好/更清洁的方法来做到这一点:

Dictionary<string,bool> dict = GetDictionary();
var keys = dict.Keys.ToList();
for (int i = 0; i < keys.Count; i++)
{
    dict[keys[i]] = false;
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过foreach的其他方法,但我有错误.

Ree*_*sey 72

这是一种合理的方法,但我更愿意:

foreach (var key in dict.Keys.ToList())
{
    dict[key] = false;
}
Run Code Online (Sandbox Code Playgroud)

调用ToList()使这个工作,因为它拉出并(暂时)保存键列表,因此迭代工作.

  • dict.Keys.ForEach(k => dict [k] = false); (3认同)
  • 使用 new List(dict.Keys) 代替 ToList (2认同)

jea*_*tsy 24

一线解决方案:

dict = dict.ToDictionary(p => p.Key, p => false);
Run Code Online (Sandbox Code Playgroud)


Sam*_*ell 6

如果你没有使用三态bool,那么你可以使用HashSet<string>,并调用Clear()将值设置为"false".


Dan*_* D. 6

我不确定这是否是最好的方法,但我在单行寻找一些东西,这对我有用

mydict.Keys.ToList().ForEach(k => mydict[k] = false);
Run Code Online (Sandbox Code Playgroud)