Сравнивает объекты на равенство, используя Equals
.Он определяет, в какое ведро их поместить, используя GetHashCode
.
В более общем смысле, HashSet использует IEqualityComparer<T>
, переданный в его конструктор, для выполнения обоих.Если ничего не указано, он использует EqualityComparer<T>.Default
, который вызывает метод GetHashCode()
и IEquatable<T>.Equals()
объекта (или object.Equals()
, если тип не реализует IEquatable<T>
).