3

演算子のオーバーロード (operator> および operator<) はルールOperator overloads have named alternatesに違反しているため、演算子 > および < には代替メソッド Compare が必要ですが、Compare メソッドは 1 つしか存在できないため、そのメソッドのシグネチャはどのようにする必要がありますか? ?

たとえば、私は持っています:

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

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

より大きい演算子とより小さい演算子の両方と同じように動作する比較メソッドを提供するにはどうすればよいですか?

編集:

int Compare()正 (より大きい)、負 (より小さい)、0 (等しい) のみを返します。オーバーロードされた演算子には >= 演算子があります。これは、Compare メソッドが (より大きいか等しい) sinario も処理する必要があることを意味します。

>、< >=、および <= の 4 つのオーバーロードされた演算子についてはどうでしょうか。

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

Compare メソッドが 1 つあり、戻り値によって、2 つのオペランドが等しい (0) かどうか、x が y より小さいかどうか、または x が y より大きいかどうかが決まります。

String.Compareたとえば、メソッドを確認してください。

于 2012-11-15T14:56:55.620 に答える