Существенным аспектом GetHashCode
является то, что наблюдение того, что хэш-коды двух объектов различаются, представляет собой не только наблюдение того, что объекты различны, но и наблюдение чего-то гораздо более мощного: если хэш-коды всех элементов в одном наборе обладают свойством, отсутствующим в те из всех объектов в другом, то наборы не имеют общих элементов.
Например, если поместить в один набор все объекты, где GetHashCode
возвращает четное число, а в другой набор все объекты, где GetHashCode
возвращает нечетное число, то затем дается объект для поиска, вызов GetHashCode
позволит мгновенно исключить из рассмотрения всех объектов в одном из наборов. Если бы вместо двух наборов использовалось двадцать, можно было бы исключить все из девятнадцати наборов. Если 256 наборов, можно удалить 255. Во многих случаях, если настроить количество наборов в зависимости от количества имеющихся у него предметов, можно будет исключить все объекты, кроме горстки, без необходимости смотреть на каждый из них. из них.
Просмотр хэш-кодов двух объектов, чтобы увидеть, могут ли они быть равными, редко бывает быстрее, чем простая проверка объектов на равенство напрямую. С другой стороны, возможность узнать, что один объект не равен 999 990 другим, не глядя на них, может быть намного быстрее, чем глядя на них, независимо от того, насколько быстрым в противном случае было бы сравнение на равенство.
person
supercat
schedule
18.12.2013
GetHashCode
на SO. - person nawfal   schedule 15.12.2013