2

我对 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}”

有什么我想念的吗?

提前致谢!

4

1 回答 1

9

BitVector32不使用索引器语法进行索引,它使用它作为位掩码。例如,如果您要这样做:

lVector[7] = true;

ToString会给0...000111

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

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

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

(0 & 0) == 0

这当然是真的。

于 2012-12-03T16:09:21.757 回答