IComparer<T> Interface

Definitie

Definieert een methode die door een type wordt geïmplementeerd om twee objecten te vergelijken.

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

Het type objecten dat moet worden vergeleken.

Dit type parameter is contravariant. U kunt het type dat u hebt opgegeven gebruiken of een type dat minder is afgeleid. Zie Covariantie en Contravariantie in Algemene typen voor meer informatie over covariantie en contravariantie.
Afgeleid

Voorbeelden

In het volgende voorbeeld wordt de IComparer<T> interface geïmplementeerd om objecten van het type Box te vergelijken op basis van hun dimensies. Dit voorbeeld maakt deel uit van een groter voorbeeld voor de Comparer<T> klasse.

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

Opmerkingen

Deze interface wordt gebruikt met de List<T>.Sort en List<T>.BinarySearch methoden. Het biedt een manier om de sorteervolgorde van een verzameling aan te passen. Klassen die deze interface implementeren, omvatten de SortedDictionary<TKey,TValue> en SortedList<TKey,TValue> algemene klassen.

De standaard implementatie van deze interface is de Comparer<T> klasse. De StringComparer klasse implementeert deze interface voor het type String.

Deze interface biedt ondersteuning voor het vergelijken van bestellingen. Dat wil zeggen dat wanneer de Compare methode 0 retourneert, twee objecten hetzelfde sorteren. De implementatie van exacte gelijkheidsvergelijkingen wordt geleverd door de IEqualityComparer<T> algemene interface.

U wordt aangeraden af te leiden van de Comparer<T> klasse in plaats van de IComparer<T> interface te implementeren, omdat de Comparer<T> klasse een expliciete interface-implementatie biedt van de IComparer.Compare methode en de Default eigenschap waarmee de standaardvergelijker voor het object wordt opgehaald.

Methoden

Name Description
Compare(T, T)

Vergelijkt twee objecten en retourneert een waarde die aangeeft of één kleiner is dan, gelijk is aan of groter is dan de andere.

Van toepassing op

Zie ook