12

我想知道.NetHashSet<T>是否完全基于哈希码,或者它是否也使用相等?

我有一个特定的类,我可能会实例化数百万个实例,并且有合理的机会在那时一些哈希码会发生冲突。

我正在考虑使用 HashSet 来存储这个类的一些实例,并且想知道它是否真的值得做——如果一个元素的唯一性只取决于它的哈希码,那么这对我来说对真正的应用程序没有用

MSDN 文档在这个主题上似乎相当模糊 - 任何启示将不胜感激

4

1 回答 1

14

不,它也使用平等。根据定义,哈希码不需要是唯一的 - 任何假设它们会被破坏的东西。HashSet<T>是明智的。它使用IEqualityComparer<T>(默认为EqualityComparer<T>.Default)来执行哈希码生成和相等测试。

于 2010-03-16T14:34:26.547 回答