public override bool Equals(object obj) { BitSet other = obj as BitSet; if (other == null) { return(false); } if (IsEmpty()) { return(other.IsEmpty()); } int minLength = Math.Min(_data.Length, other._data.Length); for (int i = 0; i < minLength; i++) { if (_data[i] != other._data[i]) { return(false); } } for (int i = minLength; i < _data.Length; i++) { if (_data[i] != 0) { return(false); } } for (int i = minLength; i < other._data.Length; i++) { if (other._data[i] != 0) { return(false); } } return(true); }