我对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}“
我遗漏了什么吗?
提前感谢!
发布于 2012-12-04 00:09:22
BitVector32不使用索引的索引器语法,它使用它作为位掩码。例如,如果您要执行以下操作:
lVector[7] = true;ToString会给0...000111。
getter的反编译代码如下所示:
return ((long) this.data & (long) bit) == (long) (uint) bit;所以最终会发生这样的事情:
(0 & 0) == 0当然,这是真的。
https://stackoverflow.com/questions/13686968
复制相似问题