我在StackOverflow上读到了大多数关于GetHashCode
的问题。但我仍然不确定是否必须在引用类型上重写GetHashCode
。在另一个问题中,我从某人的答案中获得了以下内容:
Object.GetHashCode()使用System.Object类中的内部字段来生成散列值。创建每个对象时,都会为其指定一个唯一的对象键,并将其存储为整数。这些键从1开始,并在每次创建任何类型的新对象时递增。
如果这在.NET Framework3.5中仍然是真的(有人能确认一下吗?),那么我看到的引用类型的默认实现的唯一问题是散列代码的分布会很差。
我会把我的问题分成几部分:
a)因此,如果GetHashCode
在Dictionary
中使用,那么建议也覆盖它,或者默认实现执行得很好吗?
b)我有引用类型,因为它们有唯一标识它们的字段,所以很容易做到,但是如果引用类型的所有成员都是引用类型,那该怎么办?我应该在那里做什么?
https://stackoverflow.com/questions/769467
复制相似问题