Если уникальность getHashCode() для строки или целого числа не гарантирована, зачем его использовать?C#

Место общения программистов C#
Ответить
Anonymous
 Если уникальность getHashCode() для строки или целого числа не гарантирована, зачем его использовать?

Сообщение Anonymous »

Как я написал в заголовке.

Если небезопасно использовать 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»