我该怎么做?我想在两个数组在同一索引处具有相同的TRUE / 1值时进行计数。正如您所看到的,我的代码有多个bitarrays并循环遍历每个bitarray并将它们与comparisonArray与另一个循环进行比较。它看起来效率不高,我需要它。
foreach (bitArrayTuple in bitarryList) {
for (int i = 0; i < arrayLength; i++)
if (bArrayTuple.Item2[i] && comparisonArray[i])
bitArrayTuple.Item1++;
}
其中Item1是计数,Item2是bitarray。
答案 0 :(得分:2)
没有太多方法可以做到这一点,因为BitArray
不会让其内部数组泄漏,并且因为.NET没有C ++等效的const
来防止外部修改。您可能想要从头开始创建自己的类,或者,如果您想要黑客攻击,请使用反射来获取BitArray
内的私有字段。
答案 1 :(得分:2)
这会有用吗?
http://msdn.microsoft.com/en-us/library/system.collections.bitarray.and%28v=VS.90%29.aspx
就像单身&amp; C中的运算符。
答案 2 :(得分:1)
根据元素的数量,BitVector32
可能是可用的。那只是Int32
比较。
如果无法实现,您需要抓住位于每个int[]
的{{1}}私有字段中的m_array
。然后比较每个BitArray
(一次比较32位)。
答案 3 :(得分:0)
bool equals = ba1.Xor(ba2).OfType<bool>().All(e => !e);