IComparer<T> Schnittstelle

Definition

Definiert eine Methode, die ein Typ implementiert, um zwei Objekte zu vergleichen.

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)

Typparameter

T

Der Typ der zu vergleichenden Objekte.

Dieser Typparameter ist kontravariant. Das bedeutet, dass Sie entweder den angegebenen Typ oder einen weniger abgeleiteten Typ verwenden können. Weitere Informationen zu Kovarianz und Kontravarianz finden Sie unter Kovarianz und Kontravarianz in Generics.
Abgeleitet

Beispiele

Im folgenden Beispiel wird die -Schnittstelle IComparer<T> implementiert, um Objekte vom Typ entsprechend Box ihren Dimensionen zu vergleichen. Dieses Beispiel ist Teil eines größeren Beispiels, das für die -Klasse bereitgestellt Comparer<T> wird.

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

Hinweise

Diese Schnittstelle wird mit den Methoden List<T>.Sort und List<T>.BinarySearch verwendet. Sie bietet eine Möglichkeit, die Sortierreihenfolge einer Auflistung anzupassen. Klassen, die diese Schnittstelle implementieren, enthalten die SortedDictionary<TKey,TValue> generischen Klassen SortedList<TKey,TValue> und .

Die Standardimplementierung dieser Schnittstelle ist die Comparer<T> -Klasse. Die StringComparer -Klasse implementiert diese Schnittstelle für den Typ String .

Diese Schnittstelle unterstützt Sortierungsvergleiche. Das heißt, wenn die Compare Methode 0 zurückgibt, bedeutet dies, dass zwei Objekte gleich sortieren. Die Implementierung von exakten Gleichheitsvergleichen wird von der IEqualityComparer<T> generischen -Schnittstelle bereitgestellt.

Es wird empfohlen, dass Sie von der -Klasse ableiten, anstatt die -Schnittstelle zu implementieren, da die -Klasse eine explizite Schnittstellenimplementierung der -Methode und der -Eigenschaft bietet, die den Standardvergleich für das Comparer<T> IComparer<T> Comparer<T> IComparer.Compare Default -Objekt erhält.

Methoden

Compare(T, T)

Vergleicht zwei Objekte und gibt einen Wert zurück, der angibt, ob ein Wert niedriger, gleich oder größer als der andere Wert ist.

Gilt für

Siehe auch