• 型のセマンティクスが、型が何らかの値を表すという事実に基づいている場合は、参照型で Equals をオーバーライドすることを検討してください。
• ほとんどの参照型は、Equals をオーバーライドする場合でも、等価演算子をオーバーロードしてはなりません。ただし、複素数型など、値のセマンティクスを持つことを目的とした参照型を実装している場合は、等値演算子をオーバーライドする必要があります。
a) 私の理解では、参照型の異なるインスタンスを交換可能にするには、Equals
メソッドとの両方をオーバーライドequality operator
し、型を不変にする必要がありますか?
b)値セマンティクスを持つ参照型は、その型の異なるインスタンス (同じ値を表す) が交換可能であることを示唆していませんか?
c) しかし、上記の引用によると、値のセマンティクスを持つ特定の参照型Equals
では、オーバーライドされたメソッドのみが必要であり、equality operator
. そのような型のインスタンスは明らかに交換可能ではないのに、そのような型には値のセマンティクスがあるとどのように主張できるでしょうか?
d) では、どのような基準に基づいて、値セマンティクスを持つ参照型Equals
がそのメソッドのみをオーバーライドするか、それともオーバーライドする必要があるかを決定しequality operator
ます。単純に、型を不変にするかどうかに基づいていますか?
ありがとう