我对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}”
我缺少什么?
提前致谢!
答案 0 :(得分:7)
BitVector32
不使用index的索引器语法,它将其用作位掩码。例如,如果你这样做:
lVector[7] = true;
ToString
会给0...000111
。
getter的反编译代码如下所示:
return ((long) this.data & (long) bit) == (long) (uint) bit;
所以最终发生的事情是:
(0 & 0) == 0
当然,这是真的。