我正在尝试做一个简短的模拟,其中我需要一个小位数组,于是我选择了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的时间是恒定的!(更奇怪的是)
我做错了什么?
发布于 2010-07-03 15:07:08
Look at MSDN;索引器接受掩码,而不是索引。这就是:
int mask = 1 << idx;然后使用currentCalc[mask]
这很奇怪;如果你乐于使用int --为什么要使用BitVector32,而不仅仅是masks。I也假设索引器将获取索引。非常奇怪的设计决定。
https://stackoverflow.com/questions/3170555
复制相似问题