Usable BitArray, take 2

After digging in into BitArray with Reflector, I saw that this class, in its current state, is simply unusable; Here is why:


1.  The class does not override Equals (and ==, !=, GetHashCode). We use BitArray because bitwise comparison is relatively very fast. I don’t want to perform reference comparison on bitwise array. I use bitwise structure to perform bitwise operation and bitwise comparison.


2.  This class is sealed.  Reading the first section can give you the idea why this is a mistake built on top of another mistake.


3.  The exposed bitwise operations change the state of the object. Meaning doing bitArrayInstance.And(anotherBitArray) actually change the state of bitArrayInstance. I really don’t understand why this was made by design. It is very common to perform several bitwise operations on a BitArray object and perform some comparison afterwords.


We decide to disassemble the code into a new class named BitArray2 and I refactored the code so it would fit the “normal”(in my book) usage of BitArray.
The code:


BitArray2.zip (4.19 KB)

 

Oren Ellenbogen

 

One thought on “Usable BitArray, take 2

Comments are closed.