IEqualityComparer в пространстве имен System.Collections.Generic
имеет следующие методы:
bool Equals(T x, T y);
int GetHashCode(T obj);
Поскольку этот интерфейс используется для проверки равенство объектов, первый метод Equals
имеет смысл. Но зачем нам также реализовывать GetHashCode
? Почему он вообще существует в интерфейсе? Когда он нужен и зачем?
Я использую его с методом Enumerable.Distinct () в пространстве имен System.Linq
, и я удивлен, увидев, что даже GetHashCode ()
вызывается вместе с Equals ()
. Почему? Как работает Distinct
?