IComparer<T> Gränssnitt

Definition

Definierar en metod som en typ implementerar för att jämföra två objekt.

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)

Typparametrar

T

Vilken typ av objekt som ska jämföras.

Det här är en contravariant-typparameter. Det innebär att du kan använda antingen den typ du angett eller en typ som inte är lika härledd. Mer information om kovarians och kontravarians finns i Kovarians och kontravarians i Generisk typ.
Härledda

Exempel

I följande exempel implementeras IComparer<T> gränssnittet för att jämföra objekt av typen Box efter deras dimensioner. Det här exemplet är en del av ett större exempel som tillhandahålls Comparer<T> för klassen.

// 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

Kommentarer

Det här gränssnittet används med List<T>.Sort metoderna och List<T>.BinarySearch . Det ger ett sätt att anpassa sorteringsordningen för en samling. Klasser som implementerar det här gränssnittet innehåller och SortedDictionary<TKey,TValue>SortedList<TKey,TValue> generiska klasser.

Standardimplementeringen av det här gränssnittet är Comparer<T> klassen. Klassen StringComparer implementerar det här gränssnittet för typen String.

Det här gränssnittet stöder beställningsjämförelser. Det vill säga när Compare metoden returnerar 0 innebär det att två objekt sorterar samma. Implementering av exakta likhetsjämförelser tillhandahålls av det IEqualityComparer<T> allmänna gränssnittet.

Vi rekommenderar att du härleder från Comparer<T> klassen i stället för att implementera IComparer<T> gränssnittet, eftersom Comparer<T> klassen tillhandahåller en explicit gränssnittsimplementering av IComparer.Compare metoden och egenskapen Default som hämtar standardjäxaren för objektet.

Metoder

Name Description
Compare(T, T)

Jämför två objekt och returnerar ett värde som anger om det ena är mindre än, lika med eller större än det andra.

Gäller för

Se även