Leggi in inglese

Condividi tramite


IComparer<T> Interfaccia

Definizione

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

C#
public interface IComparer<in T>
C#
public interface IComparer<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 .

C#
// 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;
        }
    }
}

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

Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Vedi anche