Rational、Real、および Complex というカスタム クラスがあります。Complex では、Complex と Real、または Complex と Rational を比較できる演算子をオーバーロードします。たとえば、Rational から Complex への暗黙のキャストを定義できれば簡単ですが、説明する価値のない理由により、できません。
したがって、私はとりわけ、
==(Complex a, Real b)
そしてまた
==(Real a, Complex b)
比べてみると明らかに
c==null
呼び出しがあいまいであるというエラー メッセージが表示されます。関連するスレッドで、定義するだけでよいという考えを見ました==(Complex a, object b)
が、対称性を許可したい==(object a, Complex b)
場合は、2 つの複合体の比較も曖昧になります。
現在、null をチェックするときは、最初に Complex をオブジェクトにキャストする必要があります。より良い解決策は何ですか? (継承などのクラス間の関係に依存するソリューションではなく、一般的なソリューションを望んでいます。)