Condividi tramite


IComparer<T> Interfaccia

Definizione

Definisce un metodo implementato da un tipo per confrontare due oggetti.

generic <typename T>
public interface class IComparer
public interface IComparer<in T>
public interface IComparer<in T> where T : allows ref struct
public interface IComparer<T>
type IComparer<'T> = interface
Public Interface IComparer(Of In T)
Public Interface IComparer(Of T)

Parametri di tipo

T

Tipo di oggetti da confrontare.

Questo parametro di tipo è controvariante, ovvero puoi usare il tipo specificato o qualsiasi tipo meno derivato. Per altre informazioni sulla covarianza e la controvarianza, vedi Covarianza e controvarianza nei generics.
Derivato

Esempio

Nell'esempio seguente viene implementata l'interfaccia IComparer<T> per confrontare gli oggetti di tipo Box in base alle relative dimensioni. Questo esempio fa parte di un esempio più ampio fornito per 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

Commenti

Questa interfaccia viene usata con i List<T>.Sort metodi e List<T>.BinarySearch . Consente di personalizzare l'ordinamento di una raccolta. Le classi che implementano questa interfaccia includono le SortedDictionary<TKey,TValue> classi generiche e SortedList<TKey,TValue> .

L'implementazione predefinita di questa interfaccia è la Comparer<T> classe . La StringComparer classe implementa questa interfaccia per il tipo String.

Questa interfaccia supporta confronti di ordinamento. Ovvero, quando il Compare metodo restituisce 0, significa che due oggetti ordinano lo stesso. L'implementazione di confronti di uguaglianza esatti viene fornita dall'interfaccia IEqualityComparer<T> generica.

È consigliabile derivare dalla Comparer<T> classe anziché implementare l'interfaccia IComparer<T> , perché la Comparer<T> classe fornisce un'implementazione esplicita dell'interfaccia del IComparer.Compare metodo e la Default proprietà che ottiene l'operatore di confronto predefinito per l'oggetto.

Metodi

Nome Descrizione
Compare(T, T)

Confronta due oggetti e restituisce un valore che indica se uno è minore, uguale o maggiore dell'altro.

Si applica a

Vedi anche