# IComparer<T> Interface

## Définition

Définit une méthode implémentée par un type pour comparer deux objets.

``````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)``

#### Paramètres de type

T

Type des objets à comparer.

Ce paramètre de type est contravariant. Cela signifie que vous pouvez utiliser le type spécifié ou tout type moins dérivé. Pour plus d’informations sur la covariance et la contravariance, consultez Covariance et contravariance dans les génériques.
Dérivé

## Exemples

L’exemple suivant implémente l’interface IComparer<T> pour comparer des objets de type `Box` en fonction de leurs dimensions. Cet exemple fait partie d’un exemple plus grand fourni pour la Comparer<T> classe .

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

## Remarques

Cette interface est utilisée avec les List<T>.Sort méthodes et List<T>.BinarySearch . Il permet de personnaliser l’ordre de tri d’une collection. Les classes qui implémentent cette interface incluent les SortedDictionary<TKey,TValue> classes génériques et SortedList<TKey,TValue> .

L’implémentation par défaut de cette interface est la Comparer<T> classe . La StringComparer classe implémente cette interface pour le type String.

Cette interface prend en charge les comparaisons de classement. Autrement dit, lorsque la Compare méthode retourne 0, cela signifie que deux objets trient de la même façon. L’implémentation de comparaisons d’égalité exacte est fournie par l’interface IEqualityComparer<T> générique.

Nous vous recommandons de dériver de la Comparer<T> classe au lieu d’implémenter l’interface IComparer<T> , car la Comparer<T> classe fournit une implémentation d’interface explicite de la IComparer.Compare méthode et la Default propriété qui obtient le comparateur par défaut pour l’objet .

## Méthodes

 Compare deux objets et retourne une valeur indiquant si le premier est inférieur, égal ou supérieur au second.