IComparer<T> Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 IComparer<T> -Schnittstelle implementiert, um Objekte vom Typ Box
entsprechend ihren Dimensionen zu vergleichen. Dieses Beispiel ist Teil eines größeren Beispiels, das für die Comparer<T> -Klasse bereitgestellt 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 List<T>.Sort Methoden und List<T>.BinarySearch verwendet. Es bietet eine Möglichkeit, die Sortierreihenfolge einer Sammlung anzupassen. Klassen, die diese Schnittstelle implementieren, umfassen die SortedDictionary<TKey,TValue> generischen Klassen und SortedList<TKey,TValue> .
Die Standardimplementierung dieser Schnittstelle ist die Comparer<T> -Klasse. Die StringComparer -Klasse implementiert diese Schnittstelle für den Typ String.
Diese Schnittstelle unterstützt Sortiervergleiche. Das heißt, wenn die Compare Methode 0 zurückgibt, bedeutet dies, dass zwei Objekte gleich sortieren. Die Implementierung exakter Gleichheitsvergleiche wird von der IEqualityComparer<T> generischen Schnittstelle bereitgestellt.
Es wird empfohlen, dass Sie von der Comparer<T> -Klasse ableiten, anstatt die IComparer<T> -Schnittstelle zu implementieren, da die Comparer<T> -Klasse eine explizite Schnittstellenimplementierung der IComparer.Compare -Methode und der Default -Eigenschaft bereitstellt, die den Standardvergleich für das Objekt abruft.
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. |