Является ли расчет уникальности хешса .NET полностью основанным на хэш -кодах?

StackOverflow https://stackoverflow.com/questions/2455168

  •  20-09-2019
  •  | 
  •  

Вопрос

Мне было интересно, есть ли .net HashSet<T> Основается полностью на хэш -кодах или также использует ли он равенство?

У меня есть конкретный класс, который я могу потенциально создавать миллионы случаев, и есть разумная вероятность того, что некоторые хеш -коды будут столкнуться в этот момент.

Я рассматриваю возможность использования хешет для хранения некоторых экземпляров этого класса, и мне интересно, стоит ли это сделать - если уникальность элемента определяется только на его хэш -коде, то это бесполезно для меня для реальных приложений

Документация MSDN, кажется, довольно расплывчата по этой теме - любое просветление будет оценено

Это было полезно?

Решение

Нет, он также использует равенство. По определению, хэш -коды не должны быть уникальными - все, что предполагает, что они будут сломаны. HashSet<T> разумно. Он использует IEqualityComparer<T> (дефолт на EqualityComparer<T>.Default) для выполнения как генерации хэш -кода, так и тестов на равенство.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top