оба интерфейсы, кажется, сравнивают объекты для равенства, поэтому каковы существенные различия между ними?
IEquatable
проверяет, равны ли два объекта.
IComparable
устанавливает полный порядок сравниваемых объектов.
Например, IEquatable
сообщит вам, что 5 не равно 7. IComparable
сообщит вам, что 5 стоит перед 7.
Как указано на странице MSDN для IEquatable :
Интерфейс IComparable определяет метод
CompareTo
, который определяет порядок сортировки экземпляров реализующего типа . Интерфейс IEquatable определяет методEquals
, который определяет равенство экземпляров реализующего типа.
Равно
vs. CompareTo
В дополнение к ответу Грега D:
Вы можете реализовать IComparable без реализации IEquatable для класса, где частичное упорядочение имеет смысл, и где вы, безусловно, желаем, чтобы потребитель сделал вывод, что только потому, что CompareTo () возвращает ноль, это не означает , что объекты равны (для чего-либо, кроме целей сортировки).
IEquatable
для равенства.
IComparable
для упорядочивания.