Comparer<T>.Compare(T, T) メソッド


派生クラスでオーバーライドされると、同じ型の 2 つのオブジェクトに対する比較を実行し、一方のオブジェクトが他方よりも小さいか、等しいか、大きいかを示す値を返します。When overridden in a derived class, performs a comparison of two objects of the same type and returns a value indicating whether one object is less than, equal to, or greater than the other.

 abstract int Compare(T x, T y);
public abstract int Compare (T x, T y);
abstract member Compare : 'T * 'T -> int
Public MustOverride Function Compare (x As T, y As T) As Integer



比較する最初のオブジェクト。The first object to compare.


比較する 2 番目のオブジェクト。The second object to compare.



xy の相対値を示す符号付き整数。次の表を参照してください。A signed integer that indicates the relative values of x and y, as shown in the following table.

Value 意味Meaning
ゼロより小さいLess than zero xyがスローされます。x is less than y.
ゼロZero xy は等しい。x equals y.
ゼロより大きいGreater than zero xyがスローされます。x is greater than y.



T 型が、IComparable<T> ジェネリック インターフェイスと IComparable インターフェイスのいずれも実装していません。Type T does not implement either the IComparable<T> generic interface or the IComparable interface.

次の例では、既定の比較子の代わりに使用できる Box オブジェクトの比較子を定義します。The following example defines a comparer of Box objects that can be used instead of the default comparer. この例は、Comparer<T> クラス用に用意されている大規模な例の一部です。This example is part of a larger example provided for the Comparer<T> class.

public class BoxLengthFirst : Comparer<Box>
    // Compares by Length, Height, and Width.
    public override int Compare(Box x, Box y)
        if (x.Length.CompareTo(y.Length) != 0)
            return x.Length.CompareTo(y.Length);
        else if (x.Height.CompareTo(y.Height) != 0)
            return x.Height.CompareTo(y.Height);
        else if (x.Width.CompareTo(y.Width) != 0)
            return x.Width.CompareTo(y.Width);
            return 0;
Public Class BoxLengthFirst
    Inherits Comparer(Of Box)
    ' Compares by Length, Height, and Width.
    Public Overrides Function Compare(ByVal x As Box, ByVal y As Box) As Integer
        If x.Length.CompareTo(y.Length) <> 0 Then
            Return x.Length.CompareTo(y.Length)
        ElseIf x.Height.CompareTo(y.Height) <> 0 Then
            Return x.Height.CompareTo(y.Height)
        ElseIf x.Width.CompareTo(y.Width) <> 0 Then
            Return x.Width.CompareTo(y.Width)
            Return 0
        End If
    End Function

End Class


T型に対してカスタマイズされた並べ替え順序の比較を提供するには、このメソッドを実装します。Implement this method to provide a customized sort order comparison for type T.

注意 (実装者)

参照型と null を比較することはできますが、例外は生成されません。Comparing null with any reference type is allowed and does not generate an exception. Null 参照は、null 以外の参照よりも小さいと見なされます。A null reference is considered to be less than any reference that is not null.

カルチャ固有の比較の詳細については、System.Globalization 名前空間とグローバリゼーションおよびローカリゼーションに関する説明を参照してください。For information on culture-specific comparisons, see the System.Globalization namespace and Globalization and Localization.