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