HashSet
сначала сравнивает результаты GetHashCode
. Если они равны, он вызывает Equals
.
Теперь я понимаю, что для реализации GetHashCode
, что-то должно быть сделано с полями объект. Простой пример реализации можно найти по адресу Какой алгоритм является лучшим для переопределенного System.Object.GetHashCode? .
В моем тесте, сравнивающем оба на 1.000.000 пар объектов, заполненных случайными данными, производительность более или менее одинаково между ними. GetHashCode
реализован, как в связанном примере, Equals
просто вызывает Equals
для всех полей. Так зачем использовать GetHashCode
вместо Equals
?