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