我有自定义类 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)
在这种情况下,两个复合体之间的比较也将是模棱两可的。
现在,当我检查 null 时,我必须先将 Complex 转换为一个对象。什么是更好的解决方案?(我希望有一个通用的解决方案,而不是依赖于类之间任何关系的解决方案,例如继承。)