重写相等操作符

本文关键字:操作符 重写 | 更新日期: 2023-09-27 18:03:21

我实现了一个重载==!=操作符的类。

这似乎工作良好;然而,我得到警告'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()

这在某个点结束吗?或者仅仅因为我想超载==!=,我就陷入了永无止境的需求之路?

重写相等操作符

这在某个点结束吗?

是的,一旦你实现了GetHashCode,它就结束了。埃里克·利珀特(Eric Lippert)在博客中阐述了它的重要性。我所能做的就是建议你阅读并相信他:-)

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

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