String.GetHashCode() возвращает разные значения

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

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

Как это могло случиться?

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

Update:

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

Ответы

Ответ 1

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

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

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