我已经实现了一个重载==
和!=
运算符的类。
这似乎工作正常;但是,我收到警告'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()
。
这会在某个时候结束吗?或者我是否因为想要超载==
和!=
而徘徊在永无止境的需求线索中?
答案 0 :(得分:11)
这会在某个时候结束吗?
是的,一旦实施GetHashCode
,它就会结束。 Eric Lippert有blogged about its importance。我能做的就是建议你阅读并信任他: - )
答案 1 :(得分:1)
是的,当您覆盖GetHashCode
时,它会结束。
当实现相等运算符以及Equals
时,程序员有责任提供实现来为该类型提供自定义哈希代码。
有关详细信息,请参阅this MSDN reference。