Каково различие между интерфейсами IComparable & IEquatable?

оба интерфейсы, кажется, сравнивают объекты для равенства, поэтому каковы существенные различия между ними?

90
задан Tim Cooper 24 September 2011 в 12:53
поделиться

4 ответа

IEquatable проверяет, равны ли два объекта.

IComparable устанавливает полный порядок сравниваемых объектов.

Например, IEquatable сообщит вам, что 5 не равно 7. IComparable сообщит вам, что 5 стоит перед 7.

180
ответ дан 24 November 2019 в 06:59
поделиться

Как указано на странице MSDN для IEquatable :

Интерфейс IComparable определяет метод CompareTo , который определяет порядок сортировки экземпляров реализующего типа . Интерфейс IEquatable определяет метод Equals , который определяет равенство экземпляров реализующего типа.

Равно vs. CompareTo

6
ответ дан 24 November 2019 в 06:59
поделиться

В дополнение к ответу Грега D:

Вы можете реализовать IComparable без реализации IEquatable для класса, где частичное упорядочение имеет смысл, и где вы, безусловно, желаем, чтобы потребитель сделал вывод, что только потому, что CompareTo () возвращает ноль, это не означает , что объекты равны (для чего-либо, кроме целей сортировки).

10
ответ дан 24 November 2019 в 06:59
поделиться

IEquatable для равенства.

IComparable для упорядочивания.

15
ответ дан 24 November 2019 в 06:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: