除了允许很好地使用哈希表之外,是否还有其他原因为我的类型实现哈希码函数?
假设我正在设计一些我打算在内部使用的类型。我知道类型是系统“内部”的,而且我也知道我永远不会在哈希表中使用这些类型。尽管如此,我决定必须重新定义 equals() 方法。
理论说我也应该重新定义哈希码方法,但我看不出有任何理由在这种情况下我应该这样做。
谁能指出我还有其他原因吗?
这个问题可以改写为:在哪些情况下我们应该在我们的类型中实现哈希码方法。
PS:我不是在问如何实现一个。我在问什么时候。
最佳答案
您可能不会 - 但是您的任何代码(例如)会使用 LINQ 吗?有许多意想不到的地方可能会在您的数据上使用 HashMap 或字典。
如果你不想意想不到的……“好玩”,那么如果你改变Equals
, 覆盖 GetHashCode
.同样,任何 IEquatable<T>.Equals
应该匹配 object.Equals
实现。
关于c# - 我什么时候应该为我的类型定义哈希码函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3033949/