Почему 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

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