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

我有什么想念的吗?

提前致谢!

最佳答案

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

lVector[7] = true;


ToString将给出0...000111

吸气剂的反编译代码如下所示:

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


所以最终发生的是:

(0 & 0) == 0


当然哪个是对的。

09-15 16:52