在 .NET 中,每当我们重写类的 Equals() 方法时,通常的做法是同时重写 GetHashCode() 方法。这样做可以确保在哈希表和字典中使用该对象时获得更好的性能。只有当它们的 GetHashCode() 值相同时,两个键才被认为在 Hashtable 中是相等的。我的问题是为什么 Hashtables 不能使用 Equals() 方法来比较键?这会消除覆盖 GetHashCode() 方法的负担。
最佳答案
HastTable/Dictionaries 在发生冲突时使用Equals
(当两个哈希码相同时)。
Why don't they use only
Equals
?
因为这比访问/(比较) 整数值(哈希码)需要更多的处理。 (由于哈希码被用作索引,所以它们具有 O(1) 的复杂度)
关于c# - 为什么哈希表和字典不使用 Equals() 方法而不是 GetHashCode 在 .NET 中进行键比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34751767/