# IComparer<T> Interface

## Definition

Definiert eine Methode, die ein Typ implementiert, um zwei Objekte zu vergleichen.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)``

#### Type Parameters

T

Der Typ der zu vergleichenden Objekte.The type of objects to compare.

This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics.
Derived

## Examples

Im folgenden Beispiel wird die IComparer<T>-Schnittstelle implementiert, um Objekte des Typs `Box` entsprechend ihren Dimensionen zu vergleichen.The following example implements the IComparer<T> interface to compare objects of type `Box` according to their dimensions. Dieses Beispiel ist Teil eines größeren Beispiels, das für die Comparer<T>-Klasse bereitgestellt wird.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
``````

## Remarks

Diese Schnittstelle wird mit den Methoden List<T>.Sort und List<T>.BinarySearch verwendet.This interface is used with the List<T>.Sort and List<T>.BinarySearch methods. Es bietet eine Möglichkeit, die Sortierreihenfolge einer Auflistung anzupassen.It provides a way to customize the sort order of a collection. Klassen, die diese Schnittstelle implementieren, beinhalten die generischen Klassen SortedDictionary<TKey,TValue> und SortedList<TKey,TValue>.Classes that implement this interface include the SortedDictionary<TKey,TValue> and SortedList<TKey,TValue> generic classes.

Die Standard Implementierung dieser Schnittstelle ist die Comparer<T>-Klasse.The default implementation of this interface is the Comparer<T> class. Die StringComparer-Klasse implementiert diese Schnittstelle für den Typ String.The StringComparer class implements this interface for type String.

Diese Schnittstelle unterstützt Bestellungs Vergleiche.This interface supports ordering comparisons. Das heißt, wenn die Compare-Methode 0 zurückgibt, bedeutet dies, dass zwei Objekte dasselbe sortieren.That is, when the Compare method returns 0, it means that two objects sort the same. Die Implementierung von exakten Gleichheits vergleichen wird von der IEqualityComparer<T> generischen-Schnittstelle bereitgestellt.Implementation of exact equality comparisons is provided by the IEqualityComparer<T> generic interface.

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 Schnittstellen Implementierung der IComparer.Compare-Methode und die Default-Eigenschaft bereitstellt, die den Standardcomparer für das-Objekt abruft.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.

## Methods

 Vergleicht zwei Objekte und gibt einen Wert zurück, der angibt, ob ein Wert niedriger, gleich oder größer als der andere Wert ist.Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other.