c# - 我什么时候应该为我的类型定义哈希码函数?

标签 c# java

除了允许很好地使用哈希表之外,是否还有其他原因为我的类型实现哈希码函数?

假设我正在设计一些我打算在内部使用的类型。我知道类型是系统“内部”的,而且我也知道我永远不会在哈希表中使用这些类型。尽管如此,我决定必须重新定义 equals() 方法。

理论说我也应该重新定义哈希码方法,但我看不出有任何理由在这种情况下我应该这样做。

谁能指出我还有其他原因吗?

这个问题可以改写为:在哪些情况下我们应该在我们的类型中实现哈希码方法。

PS:我不是在问如何实现一个。我在问什么时候

最佳答案

可能不会 - 但是您的任何代码(例如)会使用 LINQ 吗?有许多意想不到的地方可能会在您的数据上使用 HashMap 或字典。

如果你不想意想不到的……“好玩”,那么如果你改变Equals , 覆盖 GetHashCode .同样,任何 IEquatable<T>.Equals应该匹配 object.Equals实现。

关于c# - 我什么时候应该为我的类型定义哈希码函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3033949/

相关文章:

java - 如何将日期字符串转换为日期或日历对象?

java - 用于开始新项目的代码分析工具

java - 从 Spring Boot 应用程序源代码生成 ERD 图

c# - .NET 3.5 上的单声道 GetText

c# - 基于服务的数据库

c# - Gridview 固定标题

c# - 在没有布局的情况下在 MVC 3 中显示页面

c# - 不知道为什么我不能在 C# 中匹配这个正则表达式

java - 使 JDialog 始终位于应用程序之上

java - 知道时间是否在java中过去了