当运算符重载(运算符>和运算符<)违反规则Operator overloads have named alternates时,运算符>和<但是,需要另一种方法比较,因为只有一种比较方法,该方法的签名应该是什么?
例如,我有:
public static bool operator >(XXX lhs, XXX rhs)
和
public static bool operator <(XXX lhs, XXX rhs)
如何提供一种比较方法,使其与大于和小于运算符的行为相同?
编辑:
int Compare()
只返回正(大于),负(小于)和0(相等),在我的重载运算符中有一个&gt; =运算符,这意味着我的Compare方法应该处理(也大于或等于sinario
有&gt;,&lt; &gt; =和&lt; =四个重载运算符?
答案 0 :(得分:4)
public static int Compare(XXX lhs, XXX rhs);
返回值:
示例:
用法:的
// operator // named alternative
x < y Compare(x, y) < 0
x <= y Compare(x, y) <= 0
x > y Compare(x, y) > 0
x >= y Compare(x, y) >= 0
实施IComparable<T>也是一个好主意。
答案 1 :(得分:1)
您有一个比较方法,返回值确定2个操作数是否相等(0),或者x是否小于y,或者x是否大于y。
例如,查看String.Compare
方法。