我已经重写了 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/