我使用了Dictionary(TKey,TValue),用于许多目的.但是我没有遇到任何实现GetHashCode()的场景,我相信这是因为我的键是像int和string这样的主要类型.
当我们使用一个自定义对象的关键字,从而实现方法GetHashCode()Equals()等)时,我很想知道这些场景(真实世界的例子).
当我们使用一个自定义对象的关键字,从而实现方法GetHashCode()Equals()等)时,我很想知道这些场景(真实世界的例子).
解决方法
只要默认值为
Object.Equals
(参考相等性的测试)都不够,您应该覆盖Equals和GetHashCode.例如,当键的类型是自定义类型时,即使在不同于自定义类型的实例的情况下,也需要将两个关键字视为相等.
例如,如果你的密钥很简单
class Point { public int X { get; set; } public int Y { get; set; } }
并且如果他们的X相等并且他们的Y相等,那么你需要两点两点被认为是相等的,那么你将需要重写Equals和GetHashCode.