BitVector32 - 第一位是真的

Ras*_*ack 1 .net c# bitvector

我对BitVector32行为有点困惑.看测试:

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

        Assert.IsTrue(lVector[0]);
        Assert.IsFalse(lVector[1]);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

我错过了什么?

提前致谢!

vcs*_*nes 7

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

lVector[7] = true;
Run Code Online (Sandbox Code Playgroud)

ToString会给0...000111.

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

return ((long) this.data & (long) bit) == (long) (uint) bit;
Run Code Online (Sandbox Code Playgroud)

所以最终发生的事情是这样的:

(0 & 0) == 0
Run Code Online (Sandbox Code Playgroud)

当然,这是真的.