Каковы технические причины различия между 32-разрядной и 64-разрядной версиями string.GetHashCode ()?
Более важно, почему 64-разрядная версия, по-видимому, завершает свой алгоритм, когдаэто встречает NUL-символ?Например, все следующие выражения возвращают true при запуске под 64-битным CLR.
"\0123456789".GetHashCode() == "\0987654321".GetHashCode()
"\0AAAAAAAAA".GetHashCode() == "\0BBBBBBBBB".GetHashCode()
"\0The".GetHashCode() == "\0Game".GetHashCode()
Такое поведение (ошибка?) Проявлялось как проблема производительности, когда мы использовали такие строки в качестве ключей в словаре.