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

Div*_*ero 3 .net c# hashtable equals

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

Hab*_*bib 5

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

他们为什么不使用 Equals

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