2011-01-13 72 views
2

我该怎么做?我试图计算两个数组在同一个索引处具有相同的TRUE/1值。正如你所看到的,我的代码有多个bitarrays,并循环遍历每一个,并将它们与另一个循环的compareArray进行比较。它似乎不是很有效率,我需要它。有效比较相同长度的两个BitArrays

foreach (bitArrayTuple in bitarryList) { 
    for (int i = 0; i < arrayLength; i++) 
     if (bArrayTuple.Item2[i] && comparisonArray[i]) 
      bitArrayTuple.Item1++; 
} 

其中Item1是count,Item2是bitarray。

回答

1

没有太多的办法做到这一点,因为BitArray不让其内部数组的泄漏,因为.NET没有C++相当于const防止外部修改。你可能想从头开始创建自己的类,或者,如果你觉得黑客入侵,可以使用反射来获取BitArray中的私有字段。

+0

+1,是的,如果需要的是真正伟大的,然后写自己的BitArray实施将路要走 – VinayC 2011-01-13 05:57:19

1

取决于元素的数量,BitVector32可能是可用的。这只是一个Int32比较。

如果没有可能,你将需要得到位于每个BitArraym_array私人领域的int[]的保持。然后比较每个的int[](每次比较32位)。

相关问题