我对BitVector32行为有点困惑.看测试:
[TestClass]
public class ParallelPortDevices {
[TestMethod]
public void BitVector32Test() {
var lVector = new BitVector32(0);
Assert.IsTrue(lVector[0]);
Assert.IsFalse(lVector[1]);
}
}
Run Code Online (Sandbox Code Playgroud)
这过去了.即第一位设置为1(根据测试).但是,如果您运行ToString方法,您将获得"BitVector32 {00000000000000000000000000000000}"
我错过了什么?
提前致谢!
BitVector32不使用index的索引器语法,它将其用作位掩码.例如,如果你这样做:
lVector[7] = true;
Run Code Online (Sandbox Code Playgroud)
ToString会给0...000111.
getter的反编译代码如下所示:
return ((long) this.data & (long) bit) == (long) (uint) bit;
Run Code Online (Sandbox Code Playgroud)
所以最终发生的事情是这样的:
(0 & 0) == 0
Run Code Online (Sandbox Code Playgroud)
当然,这是真的.