0

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

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

尽管它编译得非常好并且可以工作,但我问自己是否可以合理的设计选择来重载==-Operator以返回除了两个对象相等之外的东西作为 a bool,特别是因为你还必须重载!=-Operator. 这是不好的做法,我应该只使用我的方法Equal吗?

4

1 回答 1

4

作为一名开发人员,我建议不要覆盖== Operator (C# Reference)

对于预定义的值类型,相等运算符 (==) 如果其操作数的值相等则返回 true,否则返回 false。对于字符串以外的引用类型,== 如果它的两个操作数引用同一个对象,则返回 true。对于字符串类型,== 比较字符串的值。

我无法想象您想要覆盖此行为的场景。如果您正在使用类,那么您可以覆盖Object.Equals Method (Object)

如果您正在与其他开发人员一起工作,这可能会非常令人困惑。

于 2017-11-21T09:29:39.680 回答