Я ищу IEqualityComparer<String>
, который поддерживает стабильный HashCode , то есть тот же HashCode между выполнениями / процессами.Мне также нужно, чтобы игнорировать регистр и непространственные символы объединения (такие как диакритические знаки).
Есть ли "простые" способы сделать это в .NET ?Я начал свою собственную реализацию со стабильного HashCode, который игнорирует регистр, но я начинаю желать, чтобы я мог как-то использовать уже существующие реализации в .NET .
Встроенный компаратор строк добавляет некоторые случайные начальные числа в HashCodes между процессами, чтобы не сделать его стабильным (я думаю, потому что они не могут гарантировать, что он останется стабильным между .NET средами выполнения?), Но ядумаю, я справлюсь с этим, просто убедившись, что сохраняемые мной HashCodes будут стерты / перестроены при переходе на другую среду выполнения .
В любом случае, есть ли способ получить доступ к вычислению внутренней контрольной суммы (без случайности)?Может быть, с отражением?
Обновление: я не эксперт по почему, но очевидно, что HashCode рассчитывается по-разному в зависимости от времени выполнения.Я нуждаюсь в этом, потому что у меня есть индекс поиска на основе диска, который использует хеш-код для строк в качестве ключей, и, поскольку он является постоянным, мне, очевидно, нужно, чтобы они были одинаковыми во время выполнения.Конечно, я мог бы рассчитывать свои собственные контрольные суммы любым способом, который мне нравится, но так как .NET уже хорошо справляется с этим, я бы хотел воспользоваться этим.Но без «семени» или того, что вы хотите назвать, вещь, которая отличает хэш-коды в зависимости от времени выполнения.