Каждый раз, когда вы реализуете оператор ==
, не забудьте также реализовать !=
, IEquatable<T>
и переопределить Object.Equals()
и Object.GetHashCode()
для согласованности для пользователя вашего класса.
Рассматривая класс, вот моя обычная реализация:
public bool Equals(MyClass other) {
if (ReferenceEquals(other, null))
return false;
if (ReferenceEquals(other, this))
return true;
return // your equality code here
}
public override bool Equals(object obj) {
return Equals(obj as MyClass);
}
public override int GetHashCode() {
return // your hash function here
}
public static bool operator ==(MyClass left, MyClass right) {
return Equals(left, right);
}
public static bool operator !=(MyClass left, MyClass right) {
return !(left == right);
}