Зачем использовать GetHashCode () вместо Equals ()?

HashSet .Add сначала сравнивает результаты GetHashCode . Если они равны, он вызывает Equals .

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

В моем тесте, сравнивающем оба на 1.000.000 пар объектов, заполненных случайными данными, производительность более или менее одинаково между ними. GetHashCode реализован, как в связанном примере, Equals просто вызывает Equals для всех полей. Так зачем использовать GetHashCode вместо Equals ?

10
задан Community 23 May 2017 в 12:09
поделиться