我阅读了关于GetHashCode
的大多数StackOverflow问题,但我仍不确定在引用类型上是否必须重写GetHashCode
。我从其他问题中某个人的答案中找到了以下内容:
Object.GetHashCode()使用System.Object类中的内部字段生成哈希值。每个创建的对象在创建时都分配一个唯一的对象键,作为整数存储。这些键从1开始,并在创建任何类型的新对象时递增。
如果这在.NET Framework 3.5中仍然是正确的(可以请有人确认吗?),那么默认实现在引用类型上唯一的问题就是哈希码分布不好。
我会分开提问:
a)所以如果在Dictionary中使用它,建议重写GetHashCode
,还是默认实现表现良好?
b)我的引用类型很容易做到这一点,因为它们具有唯一标识它们的字段,但是对于所有成员也是引用类型的引用类型该怎么办?