String.GetHashCode () возвращает разные значения - PullRequest
16 голосов
/ 17 декабря 2010

Почему GetHashCode () возвращает другое значение для той же строки? Я не могу описать, как дублировать это, но верю, что это не практическая шутка и что две следующие строки пришли из моего окна просмотра в два отдельных раза:

"DDD.Events.Application.ApplicationReferenceCreated".GetHashCode() -1386151123 int
"DDD.Events.Application.ApplicationReferenceCreated".GetHashCode() 1858139950 int

Как это могло произойти?

Я не знаю, помогает ли это, но я работаю на .NET 4.0 в VS 2010 и отлаживаю приложение NServiceBus.

Обновление:

Если вы хотите узнать, что я в итоге сделал для этого взгляда на этот поток: Можете ли вы сгенерировать хэш-значение x86 при работе в режиме x64?

1 Ответ

13 голосов
/ 17 декабря 2010

Согласно документации :

Если два строковых объекта равны, метод GetHashCode возвращает идентичные значения. Однако для каждого уникального строкового значения не существует уникального значения хеш-кода. Разные строки могут возвращать один и тот же хэш-код.

Таким образом, должен быть какой-то другой эффект, чтобы два вызова дали разные результаты. Одна теория состоит в том, что вы переключали платформы между вызовами с x86 на x64 или наоборот.

...