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

定義

定義型別會實作其以比較兩個物件的方法。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類別會實作這個介面的型別StringThe StringComparer class implements this interface for type String.

此介面支援排序的比較。This interface supports ordering comparisons. 也就是說,當Compare方法會傳回 0,表示排序兩個物件相同。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)

比較兩個物件並傳回值,指出其中一個物件為小於、等於或大於另一個物件。Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other.

適用於

另請參閱