作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试做一个简短的模拟,我需要一个小的位数组,我选择了 System.Collections.Specialized.BitVector32。
我在单线程对象中运行它,在单线程循环中运行大约 1,000,000 次,每次针对索引 {0,1,2}。
代码如下:
private System.Collections.Specialized.BitVector32 currentCalc
= new System.Collections.Specialized.BitVector32();
private void storeInCurrent(int idx, bool val)
{
currentCalc[idx] = val;
if (currentCalc[idx] != val)
{
throw new Exception("Inconceivable!");
}
}
据我了解,不应抛出异常,但有时会抛出!并非每次都抛出异常,但有相当一部分 - 恒定的 1/6 的时间! (这更奇怪)
我做错了什么?
最佳答案
Look at MSDN ;索引器采用掩码,而不是索引。那就是:
int mask = 1 << idx;
然后使用currentCalc[mask]
不过这很奇怪;如果您愿意使用掩码 - 为什么要使用BitVector32
,而不仅仅是一个int
。我还假设索引器会采用索引。非常奇怪的设计决定。
关于c# - 使用 System.Collections.Specialized.BitVector32 的问题 : a bug?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3170555/
我是一名优秀的程序员,十分优秀!