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

rk2*_*010 3 c# equality hashset

我试图找出C#如何比较HashSet中的对象是否相等.

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

只有当我来到计算器,我读它使用equals()和可能的GetHashCode()

无论如何我打算实施这两种方法,但我的问题是:

你会怎么做才能找出HashSet如何实际比较对象?

Sve*_*ven 5

它使用相似的对象进行比较Equals.它确定将它们放入使用的桶GetHashCode.

更一般地说,HashSet使用IEqualityComparer<T>传入的构造函数来执行这两个操作.如果未指定,则使用EqualityComparer<T>.Default调用对象GetHashCode()IEquatable<T>.Equals()方法(或者object.Equals()如果类型未实现IEquatable<T>).