public override bool Equals( object other )
{
if ( other == null || !( other is BitSet ) )
{
return false;
}
BitSet otherSet = (BitSet)other;
int n = Math.Min( this._bits.Length, otherSet._bits.Length );
// for any bits in common, compare
for ( int i = 0; i < n; i++ )
{
if ( this._bits[i] != otherSet._bits[i] )
{
return false;
}
}
// make sure any extra bits are off
if ( this._bits.Length > n )
{
for ( int i = n + 1; i < this._bits.Length; i++ )
{
if ( this._bits[i] != 0 )
{
return false;
}
}
}
else if ( otherSet._bits.Length > n )
{
for ( int i = n + 1; i < otherSet._bits.Length; i++ )
{
if ( otherSet._bits[i] != 0 )
{
return false;
}
}
}
return true;
}