BitVector32 - 第一个位为真

3

我对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
索引器表示的是位掩码,而不是索引。 - vcsjones
1个回答

9

BitVector32 不使用索引器语法作为索引,而是将其用作位掩码。例如,如果您这样做:

lVector[7] = true;

ToString将会返回0...000111

getter的反汇编代码如下:

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

因此,最终发生的情况是这样的:

(0 & 0) == 0

当然,这是正确的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接