Вычисление уникальности.Net HashSet полностью на основе Хэш-кодов?

Я задавался вопросом ли .NET HashSet<T> базируется полностью на хэш-кодах или использует ли это равенство также?

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

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

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

12
задан RobV 16 March 2010 в 14:32
поделиться

1 ответ

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

14
ответ дан 2 December 2019 в 21:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: