BitVector32 - 第一位是真的

时间:2012-12-03 15:58:06

标签: c# .net bitvector

我对BitVector32行为感到有点困惑。见测试:

[TestClass]
public class ParallelPortDevices {
    [TestMethod]
    public void BitVector32Test() {
        var lVector = new BitVector32(0);

        Assert.IsTrue(lVector[0]);
        Assert.IsFalse(lVector[1]);
    }
}

这过去了。即第一位设置为1(根据测试)。但是,如果您运行ToString方法,您将获得“BitVector32 {00000000000000000000000000000000}”

我缺少什么?

提前致谢!

1 个答案:

答案 0 :(得分:7)

BitVector32不使用index的索引器语法,它将其用作位掩码。例如,如果你这样做:

lVector[7] = true;

ToString会给0...000111

getter的反编译代码如下所示:

return ((long) this.data & (long) bit) == (long) (uint) bit;

所以最终发生的事情是:

(0 & 0) == 0

当然,这是真的。