重写平等运算符

时间:2011-07-25 21:56:07

标签: c# operator-overloading equals gethashcode

我已经实现了一个重载==!=运算符的类。

这似乎工作正常;但是,我收到警告'type' defines operator == or operator != but does not override Object.Equals(object o)

好的,所以我实施了Equals。但现在我收到警告'type' defines operator == or operator != but does not override Object.GetHashCode()

这会在某个时候结束吗?或者我是否因为想要超载==!=而徘徊在永无止境的需求线索中?

2 个答案:

答案 0 :(得分:11)

  

这会在某个时候结束吗?

是的,一旦实施GetHashCode,它就会结束。 Eric Lippertblogged about its importance。我能做的就是建议你阅读并信任他: - )

答案 1 :(得分:1)

是的,当您覆盖GetHashCode时,它会结束。

当实现相等运算符以及Equals时,程序员有责任提供实现来为该类型提供自定义哈希代码。

有关详细信息,请参阅this MSDN reference