IComparer<T> 介面

定義

定義類型會實作以比較兩個物件的方法。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)

類型參數

T

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

這是反變數的型別參數。 也就是說,您可以使用您指定的類型,或衍生程度較低的任何類型。 如需共變數與反變數的詳細資訊,請參閱泛型中的共變數與反變數
衍生

範例

下列範例會 IComparer<T> 根據維度的維度,來執行此介面來比較型別的物件 BoxThe 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>.Sort 和方法搭配使用 List<T>.BinarySearchThis 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)

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

適用於

另請參閱