“重置”Dictionary<int, bool>
类型结构的最佳方法是什么(将所有值设置为true
或false
)。目前我正在使用ToDictionary()
扩展方法。有没有办法通过重用当前实例来做到这一点?
此代码抛出异常:
[TestFixture]
public class Sample
{
[Test]
public void SampleTest()
{
var dictionary = new Dictionary<int, bool>{{1, false}, {2, true}, {3, false}};
foreach (var key in dictionary.Keys)
{
dictionary[key] = true;
}
Assert.That(dictionary[3], Is.True);
}
}
答案 0 :(得分:11)
foreach (int key in dictionary.Keys.ToList())
dictionary[key] = true;
答案 1 :(得分:2)
另外,您可能希望考虑使用BitArray类(System.Collections.BitArray)。它有一个SetAll方法,将所有位设置为true或false:
BitArray ba = new BitArray(8); //BitArray with 8 bits
ba[3] = true; //set some bits
ba[6] = true;
ba.SetAll(false); //Clear all
如果您不需要字典,可以考虑这个类。