c# - 使具有相同值的对象之间的 HashSet<MyType> 不同

标签 c#

我已经重写了 Equal(Object Comparee) 方法,但是当我将对象添加到我的 HashSet 时,我仍然得到 double 。我错过了什么? MyType 类型包含两个 int 字段(这么说吧)。 HashSet 是否是一个错误的集合类型?

我希望添加一些 MyType 东西,但这样集合只存储唯一的东西,其中唯一的由我定义(使用 Equals 方法或任何其他方式) 。

最佳答案

当您重写Equals()时,您应该始终重写GetHashCode()。我通常会为该方法返回某种主键(如果可用)。否则,您可以查看this thread获取实现它的想法。

理解这两个方法之间关系的关键是:

  • 如果两个条目具有不同的哈希码,则它们绝对不是 平等。
  • 如果两个条目具有相同的哈希码,则它们可能相等,因此调用 Equals() 来确定。

关于c# - 使具有相同值的对象之间的 HashSet<MyType> 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11832581/

相关文章:

c# - 工具条 WinForms .Net Core 的问题

c# - TFS 2012 构建以在日志中打印消息

c# - 如何使用非托管导出 (Robert Giesecke) 将 dateTime 类型数组从 .NET 传递到 Delphi?

c# - C# 中的正则表达式字符串缩减器?

c# - DllImport 期间出现 FatalExecutionEngineError

c# - 从数据库中读取 SQL Varbinary Blob

c# - Window Forms 和 SQL 连接实例的最佳实践

c# - EF6 postgresql 数据库优先,无法生成模型

c# - 无法为两个部分之一打开 RSA key 容器

c# - 使用线程异步执行 C# 方法