私は、==
と!=
演算子をオーバーロードするクラスを実装しました。等価演算子のオーバーライド
これは正常に動作するようです。しかし、私は警告'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()
。
これはいつか終了しますか?または、私は==
と!=
をオーバーロードしたいからといって、終わりのない道のりに迷い込んだことがありますか?
簡単な用語の訂正:*演算子をオーバーライドしない - あなたは*それらをオーバーロードする*。 –
'Equals'をオーバーライドする場合、ハッシュ関数に基づいて等価性をチェックするので、' GetHashCode'もオーバーライドする必要があります。 –
@IgorisAzanovasいいえ、Equalsはハッシュ関数に基づいて等価性をチェックしません(オーバーロードしないように特別にコード化しない限り)。ハッシュ関数は、ハッシュされたコレクションをサポートするために存在し、一意の値を生成することは期待されていません。 – Suncat2000