哪些方法在内部调用GetHashCode
本文关键字:调用 GetHashCode 在内部 方法 | 更新日期: 2023-09-27 18:28:30
我知道在重写Equals
方法时重写GetHashCode
的重要性。我假设Equals
内部调用GetHashCode
。
可能在内部使用GetHashCode
的其他方法是什么?
Equals
不在内部调用GetHashCode
GetHashCode
被许多类用作提高性能的手段:如果两个实例的哈希码不同,则根据定义,实例不等于,因此可以跳过对Equals
的调用
只有当哈希代码相同时,它才需要调用Equals
,因为多个实例可以具有相同的哈希代码,即使它们不同。
像这样工作的类的具体例子:
- 词典
- 哈希集
我假设Equals内部调用GetHashCode。
事实上,这是非常不寻常的。CCD_ 11主要由字典和其他基于哈希集的实现使用;所以:Hashtable
、Dictionary<,>
、HashSet<>
,还有一系列其他的东西。GetHashCode
基本上有两个用途:
- 获取一个松散地表示值的数字,例如,该数字可用于通过模或任何其他数字分类将一组密钥分布在一系列存储桶上
- 证明不平等(但从不证明平等)
另请参阅:为什么在重写Equals方法时重写GetHashCode很重要?