Почему String.GetHashCode() реализован по-разному в 32-битной и 64-битной версиях CLR?C#

Место общения программистов C#
Ответить
Anonymous
 Почему String.GetHashCode() реализован по-разному в 32-битной и 64-битной версиях CLR?

Сообщение Anonymous »

Каковы технические причины разницы между 32-битной и 64-битной версиями string.GetHashCode()?

Что еще более важно, почему 64-битная версия -битная версия, кажется, завершает свой алгоритм, когда встречает символ NUL? Например, все следующие выражения возвращают значение true при запуске в 64-разрядной среде CLR.

Код: Выделить всё

"\0123456789".GetHashCode() == "\0987654321".GetHashCode()
"\0AAAAAAAAA".GetHashCode() == "\0BBBBBBBBB".GetHashCode()
"\0The".GetHashCode() == "\0Game".GetHashCode()
Это поведение (ошибка?) проявлялось как проблема с производительностью, когда мы использовали такие строки в качестве ключей в словаре.

Подробнее здесь: https://stackoverflow.com/questions/681 ... it-version
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»