Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Interface IComparable<T>

Define um método de comparação generalizado que um tipo de valor ou classe implementa para criar um método de comparação específico do tipo para instâncias de pedidos.

Namespace:  System
Assembly:  mscorlib (em mscorlib.dll)

public interface IComparable<in T>

Parâmetros de tipo

in T

O tipo de objetos para comparar.

Este parâmetro de tipo é contravariante. Ou seja, você pode usar o tipo especificado ou qualquer tipo que seja menos derivado. Para obter mais informações sobre covariância e contravariância, consulte Covariância e contravariância em genéricos.

O tipo IComparable<T> expõe os membros a seguir.

  NomeDescrição
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreCompareToCompara o objeto atual com outro objeto do mesmo tipo.
Superior

Essa interface é implementada pelos tipos cujos valores podem ser ordenados, principalmente para classificar. Por exemplo, um número pode ser maior do que um segundo número, e uma cadeia de caracteres pode aparecer em ordem alfabética antes da outra. Um tipo de valor ou uma classe implementa o método de CompareTo(T) para criar um método de tipo específico de comparação apropriado para fins como a classificação.

A interface de IComparable<T> define o método de CompareTo(T) , que determina a ordem de classificação de instâncias do tipo implementando. A interface de IEquatable<T> define o método de Equals , que determina a igualdade de instâncias do tipo implementando.

A implementação do método de CompareTo(T) deve retornar Int32 que tem um dos três valores, conforme mostrado na tabela a seguir.

Valor

Significado

Menor do que zero

Este objeto é menor que o objeto especificado pelo método de CompareTo .

Zero

Este objeto é igual ao parâmetro do método.

Maior que zero

Este objeto é maior do que o parâmetro do método.

A interface de IComparable<T> fornece um método fortemente tipado de comparação para ordenar membros de um objeto de coleção genérica. Devido a isso, não é chamada geralmente diretamente de código do desenvolvedor. Em vez disso, é chamada automaticamente por métodos como List<T>.Sort() e Add.

Observações para implementadores

Substitua o parâmetro de tipo de interface de IComparable<T> com o tipo que está implementando esta interface.

Se você implementar IComparable<T>, você deve sobrecarregar op_GreaterThan, op_GreaterThanOrEqual, op_LessThan, e operadores de op_LessThanOrEqual valores de retorno que são consistentes com CompareTo. Além disso, você também deve implementar IEquatable<T>. Consulte o artigo de IEquatable<T> para informações completas.

O exemplo de código a seguir ilustra a implementação de IComparable<T> para um objeto simples de Temperature . O exemplo cria uma coleção de SortedList<TKey, TValue> de cadeias de caracteres com as chaves de objeto de Temperature , e adiciona vários pares de temperaturas e de cadeias de caracteres à lista fora da sequência. Na chamada ao método de Add , a coleção de SortedList<TKey, TValue> usa a implementação de IComparable<T> para classificar as entradas de lista, que são exibidas em seguida por ordem crescente TEMP.


using System;
using System.Collections.Generic;

public class Temperature : IComparable<Temperature>
{
    // Implement the generic CompareTo method with the Temperature 
    // class as the Type parameter. 
    //
    public int CompareTo(Temperature other)
    {
        // If other is not a valid object reference, this instance is greater.
        if (other == null) return 1;

        // The temperature comparison depends on the comparison of 
        // the underlying Double values. 
        return m_value.CompareTo(other.m_value);
    }

    // The underlying temperature value.
    protected double m_value = 0.0;

    public double Celsius    
    {
        get
        {
            return m_value - 273.15;
        }
    }

    public double Kelvin    
    {
        get
        {
            return m_value;
        }
        set
        {
            if (value < 0.0)
            {
                throw new ArgumentException("Temperature cannot be less than absolute zero.");
            }
            else
            {
                m_value = value;
            }
        }
    }

    public Temperature(double kelvins)
    {
        this.Kelvin = kelvins;
    }
}

public class Example
{
    public static void Main()
    {
        SortedList<Temperature, string> temps = 
            new SortedList<Temperature, string>();

        // Add entries to the sorted list, out of order.
        temps.Add(new Temperature(2017.15), "Boiling point of Lead");
        temps.Add(new Temperature(0), "Absolute zero");
        temps.Add(new Temperature(273.15), "Freezing point of water");
        temps.Add(new Temperature(5100.15), "Boiling point of Carbon");
        temps.Add(new Temperature(373.15), "Boiling point of water");
        temps.Add(new Temperature(600.65), "Melting point of Lead");

        foreach( KeyValuePair<Temperature, string> kvp in temps )
        {
            Console.WriteLine("{0} is {1} degrees Celsius.", kvp.Value, kvp.Key.Celsius);
        }
    }
}
/* This example displays the following output:
      Absolute zero is -273.15 degrees Celsius.
      Freezing point of water is 0 degrees Celsius.
      Boiling point of water is 100 degrees Celsius.
      Melting point of Lead is 327.5 degrees Celsius.
      Boiling point of Lead is 1744 degrees Celsius.
      Boiling point of Carbon is 4827 degrees Celsius.
*/


.NET Framework

Com suporte em: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Biblioteca de Classes Portátil

Com suporte em: Biblioteca de Classes Portátil

.NET para aplicativos da Windows Store

Com suporte em: Windows 8

.NET para aplicativos do Windows Phone

Com suporte em: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos do sistema do .NET Framework.

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft