Для чего нужен метод GetHashCode?

#.net

#.net

Вопрос:

Что такое GetHashCode метод объекта string?

Это то же самое, что при вычислении хэш-кода чего-либо? Но GetHashCode возвращает int, разве он не должен возвращать массив байтов?

Спасибо!

Комментарии:

1. Этот вопрос довольно общий. Почему хэш-код должен быть массивом байтов? Если вы скажете нам, почему вы так думаете, возможно, это поможет прояснить недоразумение.

2. потому что я использовал метод ComputeHash только для объектов hash…

Ответ №1:

То, что он должен возвращать, зависит от размера хэша. Если хэш может служить своей цели при относительно небольшом размере в 32 бита, то возврат его в качестве int имеет практический смысл. Это также было (и, я полагаю, до сих пор остается) распространенным явлением при вычислении crc32 контрольной суммы, которая, как следует из ее названия, имеет длину 32 бита.

Назначение хэша в .NET объясняется в документации, как упоминают другие ответы. Короче говоря, хэш используется в .NET для:

  • Грубо сравните два объекта на предмет равенства (вы знаете, что они не равны, если хэши не совпадают)
  • Распределять объекты по длине хэш-таблицы, когда они помещаются в одну

Ответ №2:

Это расскажет вам, для чего нужен хэш-код:

http://msdn.microsoft.com/en-us/library/system.object.gethashcode.aspx

Хэш-код — это числовое значение, которое используется для идентификации объекта во время тестирования на равенство. Он также может служить индексом для объекта в коллекции.

Обратите внимание, что реализация Object по умолчанию.GetHashCode возвращает целое число. Хэш не обязательно должен возвращать массив байтов, чтобы быть хэшем.

И это расскажет вам о строке hashcode:

http://msdn.microsoft.com/en-us/library/system.string.gethashcode.aspx