#.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