IComparer<T> Interface

Definition

定義類型會實作以比較兩個物件的方法。Defines a method that a type implements to compare two objects.

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

Type Parameters

T

要比較之物件的類型。The type of objects to compare.

This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics.
Derived

Examples

下列範例會執行 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

Remarks

這個介面會與 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時,表示兩個物件會排序相同的。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.

Methods

Compare(T, T)

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

Applies to

See also