C# - 无法找到哈希集的确认答案包含比较检查

标签 c# hashset equality

我试图了解 C# 如何比较 HashSet 中的对象是否相等。

我在这里找不到任何东西:http://msdn.microsoft.com/en-us/library/bb359438.aspx

只有当我来到 stackoverflow 时,我才读到它使用 Equals() 和可能 getHashCode()

无论如何我都计划实现这两种方法,但我的问题是:

要了解 HashSet 实际上如何比较对象,您会怎么做?

最佳答案

它使用 Equals 比较对象的相等性.它使用 GetHashCode 确定将它们放置在哪个桶中.

更一般地说,HashSet 使用 IEqualityComparer<T>传递给它的构造函数来做这两件事。如果未指定,则使用 EqualityComparer<T>.Default它调用对象的 GetHashCode()IEquatable<T>.Equals()方法(或 object.Equals() 如果类型未实现 IEquatable<T> )。

关于C# - 无法找到哈希集的确认答案包含比较检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6295525/

相关文章:

javascript - 如何将 C# 枚举列表传递和使用到 Javascript 文件并在其中使用

c# - DirectoryInfo.CreationTime 返回奇怪的日期

Java集包含所有性能

java - 如何在 Java 中比较字符串?

c# - 不同环境Winforms大小不同

c# - 我可以在 Visual Studio Code 中使用设计 View 吗?

java - 为什么HashSet中的项总是以相同的顺序显示?

java - 对文本文件中出现的字符串进行排序

c++ - 浮点值等于整数

java - 如何在 Java 中比较字符串?