c# - .Net HashSet 唯一性计算是否完全基于Hash Codes?

标签 c# .net hashset gethashcode

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

我有一个特定的类,我可能会实例化它的数百万个实例,并且某些哈希码很可能会在此时发生冲突。

我正在考虑使用 HashSet 来存储此类的一些实例,并且想知道它是否真的值得这样做 - 如果元素的唯一性仅由其哈希码确定,那么这对我的实际应用程序毫无用处

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

最佳答案

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

关于c# - .Net HashSet 唯一性计算是否完全基于Hash Codes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2455168/

相关文章:

c# - 通过 SqlDataReader 将 SQL 数据类型 BIT NOT NULL 转换为 C# 类型 Byte

java - 我可以将 HashSet 存储到 Firestore 文档 (Java)

java - 重复的自定义对象被添加到哈希集中

c# - .Net 将一个大型表单提交分解为多个提交

c# - 委托(delegate)还是反射(reflection)?

c# - 在另一个项目中读取 JSON 文件时出现问题

c# - 如何将图像连同 DPI 信息一起保存到剪贴板?

c# - Wpf Prism 区域导航

.net - 中继访问被拒绝,system.net.mail

java - 在 Java 中将哈希集保存到文件中