重写相等操作符
本文关键字:操作符 重写 | 更新日期: 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
时,程序员有责任提供实现,为该类型提供自定义哈希码。