gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 13:44:47 25 4
gpt4 key购买 nike

在 .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/

25 4 0
文章推荐: ios - KCSPersistable 并出现 Swift 错误
文章推荐: ios - 将 View 背景设置为能够缩放的图像
文章推荐: swift - 我的drawRect函数不会更新
文章推荐: c# - 如何将 List 转换为 IEnumerable