【发布时间】:2010-10-20 15:31:30
【问题描述】:
我在 StackOverflow 上阅读了大多数关于 GetHashCode 的问题。但我仍然不确定是否必须在引用类型上覆盖 GetHashCode。我从某人在另一个问题中的回答中摘录了以下内容:
Object.GetHashCode() 使用内部 System.Object 类中的字段 生成哈希值。每个对象 created 被分配了一个唯一的对象 键,存储为整数,当它是 创建的。这些键从 1 开始, 每次增加一个新对象 任何类型都会被创建。
如果在 .NET Framework 3.5 中仍然如此(有人可以确认吗?),那么我看到的引用类型的默认实现的唯一问题是哈希码的分布很差。
我将分解我的问题:
a) 因此,如果GetHashCode 用于Dictionary,建议也覆盖它,或者默认实现是否执行得很好?
b) 我有引用类型,因为它们具有唯一标识它们的字段,所以很容易做到这一点,但是那些所有成员也是引用类型的引用类型呢?我应该在那里做什么?
【问题讨论】:
标签: c# .net dictionary gethashcode