c# - ¿Cuál es la diferencia entre las interfaces IComparable e IEquatable?
(4)
ambas interfaces parecen comparar objetos para la igualdad, entonces, ¿cuáles son las principales diferencias entre ellos?
Además de la respuesta de Greg D''s:
Puede implementar IComparable sin implementar IEquatable para una clase donde un orden parcial tiene sentido, y donde definitivamente desea que el consumidor extraiga la inferencia de que solo porque CompareTo () devuelve cero, esto no implica que los objetos sean iguales (para nada aparte de los propósitos de clasificación).
Como se indica en la página de MSDN para IEquatable :
La interfaz IComparable define el método
CompareTo
, que determina el orden de las instancias del tipo de implementación. La interfaz IEquatable define el métodoEquals
, que determina la igualdad de instancias del tipo de implementación.
Equals
contra CompareTo
IEquatable<T>
para la igualdad.
IComparable<T>
para ordenar.
IEquatable
prueba si dos objetos son iguales.
IComparable
impone un orden total en los objetos que se comparan.
Por ejemplo, IEquatable
le diría que 5 no es igual a 7. IComparable
le diría que 5 viene antes de 7.