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<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 i 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

Compare(T, T)

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

Si applica a

Vedi anche