c# – 我们什么时候为字典做GetHashCode()?

我使用了Dictionary(TKey,TValue),用于许多目的.但是我没有遇到任何实现GetHashCode()的场景,我相信这是因为我的键是像int和string这样的主要类型.
当我们使用一个自定义对象的关键字,从而实现方法GetHashCode()Equals()等)时,我很想知道这些场景(真实世界的例子).

而且,使用自定义对象的关键是否需要实现这些功能?

解决方法

只要默认值为 Object.Equals(参考相等性的测试)都不够,您应该覆盖Equals和GetHashCode.例如,当键的类型是自定义类型时,即使在不同于自定义类型的实例的情况下,也需要将两个关键字视为相等.

例如,如果你的密钥很简单

class Point {
    public int X { get; set; }
    public int Y { get; set; }
}

并且如果他们的X相等并且他们的Y相等,那么你需要两点两点被认为是相等的,那么你将需要重写Equals和GetHashCode.

相关文章

项目中经常遇到CSV文件的读写需求,其中的难点主要是CSV文件...
简介 本文的初衷是希望帮助那些有其它平台视觉算法开发经验的...
这篇文章主要简单记录一下C#项目的dll文件管理方法,以便后期...
在C#中的使用JSON序列化及反序列化时,推荐使用Json.NET——...
事件总线是对发布-订阅模式的一种实现,是一种集中式事件处理...
通用翻译API的HTTPS 地址为https://fanyi-api.baidu.com/api...