Как я написал в заголовке.
Если небезопасно использовать getHashCode() в вашем приложении, зачем его использовать? (для строк и целых чисел)
Я хочу использовать его для пересечения методов и исключения методов в моделях Linq
или создать свой собственный класс IEqualityCompare.
Это похоже на шанс - если он не на 100% безопасен?
Или я что-то пропустил?
Как указано в методе String.GetHashCode в https://learn.microsoft.com/
Важно
Если два строковых объекта равны, метод GetHashCode возвращает идентичные значения. Однако для каждого уникального строкового значения не существует уникального значения хеш-кода. Разные строки могут возвращать один и тот же хеш-код.
Сам по себе хеш-код не может быть стабильным. Хэш-коды для одинаковых строк могут различаться в разных реализациях .NET, в разных версиях .NET и на разных платформах .NET (например, 32-разрядных и 64-разрядных) для одной версии .NET. В некоторых случаях они могут даже различаться в зависимости от домена приложения. Это означает, что два последующих запуска одной и той же программы могут возвращать разные хэш-коды.
В результате хеш-коды никогда не должны использоваться за пределами домена приложения, в котором они были
созданы, их никогда не следует использовать в качестве ключевых полей в коллекции и никогда не следует сохранять.
Наконец, не используйте хеш-код вместо значения, возвращаемого функцией криптографическую хеш-функцию, если
вам нужен криптостойкий хэш. Для криптографических хэшей используйте класс, производный от класса
System.Security.Cryptography.HashAlgorithm или System.Security.Cryptography.KeyedHashAlgorithm.
Для получения дополнительной информации о хеш-кодах см. Object.GetHashCode.
Подробнее здесь: https://stackoverflow.com/questions/592 ... why-use-it