Partager via


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(T, T)

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

S’applique à

Voir aussi