Да, этот код даст одинаковый результат на каждой платформе для одного и того же ввода. char
- это кодовая единица UTF-16, независимо от платформы, и любой заданный char
будет преобразован в одно и то же значение int
на каждой платформе. Как обычно с хеш-кодами, вычисляемыми так, вы не должны предполагать, что равные хеш-коды подразумевают равные исходные значения. (Если честно, неясно, как вы собираетесь использовать хеш.)
Я хотел бы отметить, что ваш код не является потокобезопасным, хотя - если два потока вызывают GetHashCode
в основном в одно и то же время, можно увидеть значение 0 (и, следовательно, начать хеширование), тогда как второй может увидеть промежуточный результат (рассчитанный первым потоком) и предположим, что это окончательный хеш. Если вы действительно считаете, что кэширование здесь важно (и я бы сначала это проверил), вам следует вычислить полный хеш с использованием локальной переменной, а затем скопировать его в поле только после того, как вы закончите.