Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
GetHashCode当我们覆盖Equals方法时,我知道覆盖的重要性。我假设Equals内部调用GetHashCode.
GetHashCode
Equals
可能在内部使用的其他方法是GetHashCode什么?
Equals不会在内部调用GetHashCode. GetHashCode许多类将其用作提高性能的一种手段:如果两个实例的哈希码不同,则根据定义Equals,实例不相等,因此可以跳过对的调用。 仅当哈希码相同时才需要调用Equals,因为多个实例可以具有相同的哈希码,即使它们不同。
像这样工作的类的具体示例:
我假设 Equals 在内部调用 GetHashCode。
这实际上是非常不寻常的。GetHashCode主要由字典和其他基于哈希集的实现使用;所以: Hashtable, Dictionary<,>, HashSet<>, 和一系列其他的东西。基本上,GetHashCode有两个目的:
Hashtable
Dictionary<,>
HashSet<>
另请参阅:为什么在重写 Equals 方法时重写 GetHashCode 很重要?