Ler em inglês

Compartilhar via


IComparer<T> Interface

Definição

Define um método que um tipo implementa para comparar dois objetos.

C#
public interface IComparer<in T>
C#
public interface IComparer<T>

Parâmetros de tipo

T

O tipo de objetos a serem comparados.

Este parâmetro de tipo é contravariante. Isso significa que é possível usar o tipo especificado ou qualquer tipo menos derivado. Para obter mais informações sobre covariância e contravariância, consulte Covariância e contravariância em genéricos.
Derivado

Exemplos

O exemplo a seguir implementa a IComparer<T> interface para comparar objetos do tipo Box de acordo com suas dimensões. Este exemplo faz parte de um exemplo maior fornecido para a 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;
        }
    }
}

Comentários

Essa interface é usada com os List<T>.Sort métodos e List<T>.BinarySearch . Ele fornece uma maneira de personalizar a ordem de classificação de uma coleção. As classes que implementam essa interface incluem as SortedDictionary<TKey,TValue> classes genéricas e SortedList<TKey,TValue> .

A implementação padrão dessa interface é a Comparer<T> classe . A StringComparer classe implementa essa interface para o tipo String.

Essa interface dá suporte a comparações de ordenação. Ou seja, quando o Compare método retorna 0, significa que dois objetos classificam o mesmo. A implementação de comparações exatas de igualdade é fornecida pela IEqualityComparer<T> interface genérica.

Recomendamos que você derive da Comparer<T> classe em vez de implementar a IComparer<T> interface , pois a Comparer<T> classe fornece uma implementação de interface explícita do IComparer.Compare método e a Default propriedade que obtém o comparador padrão para o objeto.

Métodos

Compare(T, T)

Compara dois objetos e retorna um valor que indica se um é menor, igual ou maior do que o outro.

Aplica-se a

Produto Versões
.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

Confira também