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