我对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
当然哪个是对的。