3

由于运算符重载(运算符>和运算符<)违反规则运算符重载命名为alternate,运算符>和<需要替代方法比较,但是,由于只能有一个比较方法,该方法的签名应该是什么?

例如,我有:

public static bool operator >(XXX lhs, XXX rhs)

public static bool operator <(XXX lhs, XXX rhs)

如何提供一种比较方法,使其与大于和小于运算符的行为相同?

编辑:

唯一返回正int Compare()(大于)、负(小于)和 0(等于),在我的重载运算符中有一个 >= 运算符,这意味着我的比较方法也应该处理(大于或等于)sinario

那么有 >、< >= 和 <= 四个重载运算符呢?

4

2 回答 2

4
public static int Compare(XXX lhs, XXX rhs);

返回值:

  • 小于零
    lhs小于rhs

  • lhs等于rhs
  • 大于零
    lhs大于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>也是一个好主意。

于 2012-11-15T14:56:55.080 回答
1

您有一个比较方法,返回值确定两个操作数是否相等 (0),或者 x 是否小于 y,或者 x 是否大于 y。

例如,查看String.Compare方法。

于 2012-11-15T14:56:55.620 回答