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.
BitArray2.zip (4.19 KB)
One thought on “Usable BitArray, take 2”
Boogie’s got the magic touch!
Comments are closed.