HashSet<T>.Add
首先比较的结果GetHashCode
。如果它们相等,则调用Equals
.
现在,我的理解是为了实现GetHashCode
,必须对对象的字段做一些事情。一个简单的示例实现可以在What is the best algorithm for an overridden System.Object.GetHashCode?.
在我的测试中,比较了 1.000.000 对充满随机数据的对象,两者的性能或多或少相等。GetHashCode
如链接示例中那样实现,Equals
只需调用Equals
所有字段。那么为什么要使用GetHashCode
overEquals
呢?