我知道在覆盖GetHashCode
方法时覆盖Equals
的重要性。我假设Equals
在内部调用GetHashCode
。
使用GetHashCode
内部可能有哪些其他方法?
答案 0 :(得分:4)
我假设Equals在内部调用GetHashCode。
实际上这很不寻常。 GetHashCode
主要由字典和其他基于哈希集的实现使用;所以:Hashtable
,Dictionary<,>
,HashSet<>
以及其他一系列内容。基本上,GetHashCode
有两个目的:
另请参阅:Why is it important to override GetHashCode when Equals method is overridden?
答案 1 :(得分:3)
Equals
内部没有致电GetHashCode
许多类使用GetHashCode
作为提高性能的方法:如果两个实例的哈希码不同,则实例不等于按定义,因此对Equals
的调用可以被跳过。
只有当哈希码相同时才需要调用Equals
,因为多个实例可以具有相同的哈希码,即使它们不同。
类似这样工作的类的具体示例: