加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 17:37:21 所属栏目:百科 来源:网络整理
导读:我使用了Dictionary(TKey,TValue),用于许多目的.但是我没有遇到任何实现GetHashCode()的场景,我相信这是因为我的键是像int和string这样的主要类型. 当我们使用一个自定义对象的关键字,从而实现方法GetHashCode()Equals()等)时,我很想知道这些场景(真实世界的
我使用了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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读