Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Создание надежного хеш кода


Автор: iad 10.9.2007, 18:10
Нужно в классе переопределить GetHashCode(), существуют ли надежные алгоритмы для генерации этого кода? Т.е. чтобы равенство хеш кодов гарантировало бы 100% равенство объектов. буду благодарен за примеры или ссылки...

Автор: mr.DUDA 10.9.2007, 18:36
Цитата(iad @  10.9.2007,  18:10 Найти цитируемый пост)
 Т.е. чтобы равенство хеш кодов гарантировало бы 100% равенство объектов. буду благодарен за примеры или ссылки...

Так не получится. Если решать "в лоб" (например брать за хэшкод адрес объекта в памяти), получится много близких значений, что сводит на нет использование Hashtable/Dictionary (хэшкод должен быть ну почти рандомным). Если вычислять по содержимому объекта - так или иначе будут одинаковые значения, т.к. уместить в 32-разрядном значении все признаки объекта нереально. А так как в общем случае объекты друг о друге не знают, то сделать проверку на пересечение и скорректировать один-два бита не выйдет.

Поэтому и перекрывают Equals "в нагрузку" к GetHashCode.

Автор: iad 11.9.2007, 10:54
вобщем я так и думал, что нет смысла заморачиваться на создание сильно надежного хешкода.. всеравно дополнительные проверки делать придется.. спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)