为什么.NET中Hashtables和字典不使用Equals()方法而不是GetHashCode进行键比较?

除零

在.NET中,只要我们为类重写Equals()方法,通常的做法就是也重写GetHashCode()方法。当在哈希表和字典中使用该对象时,这样做将确保更好的性能。仅当两个键的GetHashCode()值相同时,它们才视为在Hashtable中相等。我的问题是为什么哈希表不能使用Equals()方法比较键?那会消除重写GetHashCode()方法的负担。

哈比卜

HastTable / DictionariesEquals在发生冲突的情况下使用(两个哈希码相同时)

他们为什么不使用 Equals

因为这将比访问/ (比较)整数值(哈希码)需要更多的处理(由于将哈希码用作索引,因此它们的复杂度为O(1))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章