Я искал ответ в Интернете, но все, что я нашел, было:
Изменить: добавлены некоторые элементы в ответ на ответы
-
Для IEquatable
- Я должен перегружать
Equals()
,GetHashCode()
,==
и!=
вместе. - Я должен уменьшить избыточность через реализацию
!=
через==
. - Я должен запечатать класс
- Я должен перегружать
-
Для IComparable
- Я должен перегружать
Equals()
,GetHashCode()
,<
,>
,<=
и>=
вместе. - На самом деле рекомендуется реализовать IEquatable при этом
- Перегрузите нестандартную версию IComparable
-
CompareTo() == 0
должен означатьEquals() == true
- Я должен перегружать
Итак, я думал об этом:
public bool Equals(T other)
{
if ((object)other == null)
{
return false;
}
return CompareTo(other) == 0;
}
Я что-то пропускаю или это нормально?