Будет ли string.GetHashCode () возвращать отрицательное значение? - PullRequest
14 голосов
/ 31 января 2012

Я пытался с партией случайных строк, все значения, которые я получил, являются положительными, но мне интересно:

Вернет ли String.GetHashCode() отрицательный или 0?

Поскольку возвращаемое значение равно int , так что я думаю, что это может быть, поэтому, если это так, я должен изменить свою логику.

Если у вас есть ответ или есть официальные источники, пожалуйста, поделитесь

Ответы [ 2 ]

24 голосов
/ 31 января 2012

Да, он может возвращать отрицательные значения.

Вы не должны иметь какую-либо логику, которая работает со значениями GetHashCode().
GetHashCode() не гарантируется быть уникальным иможет меняться между сборками.

GetHashCode() должен рассматриваться как непрозрачный токен, который можно комбинировать с другими хэшами или преобразовывать в хеш-таблицы.

6 голосов
/ 31 января 2012

Может возвращать отрицательное значение (на основе msdn):
http://msdn.microsoft.com/en-us/library/system.string.gethashcode.aspx

...