IComparer<T> IComparer<T> IComparer<T> IComparer<T> Interface

定義

2 つのオブジェクトを比較するために型が実装するメソッドを定義します。Defines a method that a type implements to compare two objects.

generic <typename T>
public interface class IComparer
public interface IComparer<in T>
type IComparer<'T> = interface
Public Interface IComparer(Of In T)

型パラメーター

T

比較するオブジェクトの型。The type of objects to compare.

派生

次の例では、実装、IComparer<T>インターフェイス型のオブジェクトを比較するBoxディメンションに従ってします。The following example implements the IComparer<T> interface to compare objects of type Box according to their dimensions. この例が示されている例の一部、Comparer<T>クラス。This example is part of a larger example provided for the Comparer<T> class.

// This class is not demonstrated in the Main method
// and is provided only to show how to implement
// the interface. It is recommended to derive
// from Comparer<T> instead of implementing IComparer<T>.
public class BoxComp : IComparer<Box>
{
    // Compares by Height, Length, and Width.
    public int Compare(Box x, Box y)
    {
        if (x.Height.CompareTo(y.Height) != 0)
        {
            return x.Height.CompareTo(y.Height);
        }
        else if (x.Length.CompareTo(y.Length) != 0)
        {
            return x.Length.CompareTo(y.Length);
        }
        else if (x.Width.CompareTo(y.Width) != 0)
        {
            return x.Width.CompareTo(y.Width);
        }
        else
        {
            return 0;
        }
    }
}
' This class is not demonstrated in the Main method
' and is provided only to show how to implement
' the interface. It is recommended to derive
' from Comparer<T> instead of implementing IComparer<T>.
Public Class BoxComp
	Implements IComparer(Of Box)
	' Compares by Height, Length, and Width.
    Public Function Compare(ByVal x As Box, ByVal y As Box) As Integer Implements _
                                                IComparer(Of Box).Compare
        If x.Height.CompareTo(y.Height) <> 0 Then
            Return x.Height.CompareTo(y.Height)
        ElseIf x.Length.CompareTo(y.Length) <> 0 Then
            Return x.Length.CompareTo(y.Length)
        ElseIf x.Width.CompareTo(y.Width) <> 0 Then
            Return x.Width.CompareTo(y.Width)
        Else
            Return 0
        End If
    End Function
End Class

注釈

このインターフェイスを併用、List<T>.SortList<T>.BinarySearchメソッド。This interface is used with the List<T>.Sort and List<T>.BinarySearch methods. コレクションの並べ替え順序をカスタマイズする方法を提供します。It provides a way to customize the sort order of a collection. このインターフェイスを実装するクラスには、SortedDictionary<TKey,TValue>SortedList<TKey,TValue>ジェネリック クラスです。Classes that implement this interface include the SortedDictionary<TKey,TValue> and SortedList<TKey,TValue> generic classes.

このインターフェイスの既定の実装は、Comparer<T>クラス。The default implementation of this interface is the Comparer<T> class. StringComparerクラスの種類には、このインターフェイスを実装するStringします。The StringComparer class implements this interface for type String.

このインターフェイスは、順序の比較をサポートします。This interface supports ordering comparisons. つまり、ときに、Compareメソッドは 0 を返します、同じ 2 つのオブジェクトを並べ替えることを意味します。That is, when the Compare method returns 0, it means that two objects sort the same. によって提供される正確な等価比較の実装、IEqualityComparer<T>ジェネリック インターフェイス。Implementation of exact equality comparisons is provided by the IEqualityComparer<T> generic interface.

派生させることをお勧め、Comparer<T>クラスを実装する代わりに、IComparer<T>ため、インターフェイス、Comparer<T>クラスの明示的なインターフェイス実装を提供する、IComparer.CompareメソッドとDefaultプロパティをオブジェクトの既定の比較子を取得します。We recommend that you derive from the Comparer<T> class instead of implementing the IComparer<T> interface, because the Comparer<T> class provides an explicit interface implementation of the IComparer.Compare method and the Default property that gets the default comparer for the object.

メソッド

Compare(T, T) Compare(T, T) Compare(T, T) Compare(T, T)

2 つのオブジェクトを比較して、一方が他方より小さいか、同じか、または大きいかを示す値を返します。Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other.

適用対象

こちらもご覧ください