c# - 我们什么时候为字典执行 GetHashCode()?

标签 c# .net

我已将 Dictionary(TKey, TValue) 用于多种用途。但是我没有遇到任何实现 GetHashCode() 的场景,我认为这是因为我的键是主要类型,如 int 和 string。 我很想知道应该使用自定义对象作为键并因此实现方法 GetHashCode() Equals() 等的场景(真实世界的示例)。

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

最佳答案

只要默认 Object.Equals,您就应该覆盖 EqualsGetHashCode (引用相等性测试)是不够的。例如,当您的键类型是自定义类型并且您希望两个键被视为相等时,即使它们不是自定义类型的同一实例,也会发生这种情况。

例如,如果您的 key 很简单

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

并且您希望两个 Point 如果它们的 X 相等并且它们的 Y 相等,那么您将需要覆盖 EqualsGetHashCode

关于c# - 我们什么时候为字典执行 GetHashCode()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1407380/

相关文章:

c# - TreeView子节点填充问题

c# - 信号量动态调整大小 C#

c# - 不为空时处理 ConcurrentStack?

c# - 扩展模型以添加方法

c# - 如何以编程方式创建 Google 帐户?

c# - HTML Agility Pack - 如何在 Head 元素的顶部附加元素?

c# - Linq 到 XML : Problem with colon in the xml tags

.net - 是否有下划线(_)行继续的相反?

.net - 应该签署互操作程序集吗?

c# - 如何在 VB.net 中以编程方式关闭窗口?