C# 重载 operator==: Return 除了 bool 以外的东西
C# overloading operator==: Return something else than bool
我正在编写一个 class 库来使用牛顿法求解非线性方程。我偶然发现了运算符重载并考虑过重载 ==-Operator。类似 expression1 == expression2
return 的解决方案是 Constant
,它基本上是 System.Double
:
的包装器-class
public static Constant operator ==(Derivable d1, Derivable d2)
{
return d1.Equal(d2);
}
虽然它编译得很好并且可以工作,但我在问自己,将 ==-Operator
重载到 return 是否是一个合理的设计选择,而不是两个对象的相等性a bool
,尤其是因为您还必须重载 !=-Operator
。这是不好的做法,我应该只使用我的方法 Equal
?
作为一名开发人员,我建议不要覆盖 == Operator (C# Reference)。
For predefined value types, the equality operator (==) returns true if
the values of its operands are equal, false otherwise. For reference
types other than string, == returns true if its two operands refer to
the same object. For the string type, == compares the values of the
strings.
我无法想象您想要覆盖此行为的场景。如果您正在使用 类,那么您可以覆盖 Object.Equals Method (Object)。
如果您正在与其他开发人员合作,这可能会非常混乱。
我正在编写一个 class 库来使用牛顿法求解非线性方程。我偶然发现了运算符重载并考虑过重载 ==-Operator。类似 expression1 == expression2
return 的解决方案是 Constant
,它基本上是 System.Double
:
public static Constant operator ==(Derivable d1, Derivable d2)
{
return d1.Equal(d2);
}
虽然它编译得很好并且可以工作,但我在问自己,将 ==-Operator
重载到 return 是否是一个合理的设计选择,而不是两个对象的相等性a bool
,尤其是因为您还必须重载 !=-Operator
。这是不好的做法,我应该只使用我的方法 Equal
?
作为一名开发人员,我建议不要覆盖 == Operator (C# Reference)。
For predefined value types, the equality operator (==) returns true if the values of its operands are equal, false otherwise. For reference types other than string, == returns true if its two operands refer to the same object. For the string type, == compares the values of the strings.
我无法想象您想要覆盖此行为的场景。如果您正在使用 类,那么您可以覆盖 Object.Equals Method (Object)。
如果您正在与其他开发人员合作,这可能会非常混乱。