.Net HashSet唯一性计算完全基于哈希码吗?

Rob*_*obV 12 .net c# hashset gethashcode

我想知道.Net HashSet<T>是完全基于哈希码还是它是否也使用了相等?

我有一个特定的类,我可能会实例化数百万个实例,并且有一些合理的可能性,在这一点上一些哈希码会发生冲突.

我正在考虑使用HashSet来存储这个类的一些实例,我想知道它是否真的值得做 - 如果一个元素的唯一性只是根据它的哈希码确定那么那对我来说对于实际的应用程序毫无用处

MSDN文档在这个主题上似乎相当模糊 - 任何启示都会受到赞赏

Jon*_*eet 14

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