设置IDictionary的所有值

时间:2010-07-06 13:26:11

标签: c# .net

“重置”Dictionary<int, bool>类型结构的最佳方法是什么(将所有值设置为truefalse)。目前我正在使用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);
    }
}

2 个答案:

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

如果您不需要字典,可以考虑这个类。