C#超载操作员==:返回Bool以外的其他内容



我正在使用牛顿的方法编写一个类库来求解非线性方程。我偶然发现了运算符越过载荷,并考虑过超载== - 操作员。诸如expression1 == expression2之类的东西将解决方案返回为Constant,它基本上是System.Double的包装级:

public static Constant operator ==(Derivable d1, Derivable d2)
{
    return d1.Equal(d2);
}

尽管它完全很好地编译并有效,但我问自己是否曾经是一个合理的设计选择,以使==-Operator超载以返回两个对象以外的其他物体作为bool,尤其是因为您也必须超载!=-Operator。这是不好的做法吗?我应该只使用我的方法Equal

作为其他开发人员,我建议不要覆盖==操作员(c#reference)。

对于预定义的价值类型,相等性运算符(==)如果 其操作数的值是相等的,否则是错误的。以供参考 字符串以外的其他类型,==返回true,如果其两个操作数是指 相同的对象。对于字符串类型,==比较 字符串。

我无法想象您想覆盖这种行为的情况。如果您正在使用类,则可以覆盖对象。Equals方法(对象)。

如果您正在与其他开发人员合作,这可能会非常混乱。

最新更新