8

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

这似乎工作正常;但是,我收到警告'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()

这会在某个时候结束吗?==或者我是否只是因为我想超载而陷入永无止境的需求轨迹!=

4

2 回答 2

11

这会在某个时候结束吗?

是的,一旦你实施GetHashCode它就会结束。Eric Lippert已经在博客中介绍了它的重要性。我所能做的就是建议你阅读并相信他:-)

于 2011-07-25T21:57:33.050 回答
1

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

此外,在实现相等运算符时,Equals程序员有责任提供一种实现来为该类型提供自定义哈希码。

有关详细信息,请参阅此 MSDN 参考

于 2011-07-25T21:58:53.113 回答