Exportar (0) Imprimir
Expandir todo

Interfaz genérica IComparable

Nota: esta interfaz es nueva en la versión 2.0 de .NET Framework.

Define un método de comparación generalizado, implementado por un tipo de valor o clase con el fin de crear un método de comparación específico del tipo para ordenar instancias.

Espacio de nombres: System
Ensamblado: mscorlib (en mscorlib.dll)

public interface IComparable<T>
J# admite el uso de métodos y tipos genéricos, pero no admite la declaración de métodos y tipos nuevos.
JScript no admite el uso de métodos y tipos genéricos.

Esta interfaz la implementan tipos cuyos valores se pueden ordenar, como por ejemplo, las clases numéricas o de tipo cadena. Un tipo de valor o clase implementa el método CompareTo para crear un método de comparación específico del tipo adecuado a propósitos tales como la ordenación.

NotaNota

La interfaz IComparable define el método CompareTo, que determina el criterio de ordenación de instancias del tipo que se está implementando. La interfaz IEquatable define el método Equals, que determina la igualdad de instancias del tipo que se está implementando.

Notas para los implementadores Reemplace el parámetro de tipo de la interfaz IComparable con el tipo que esté implementando esta interfaz.

En el ejemplo de código siguiente se muestra la implementación de IComparable para un objeto Temperature sencillo. En el ejemplo se crea una colección SortedList de cadenas con claves de objetos Temperature y se agregan varios pares de temperaturas y cadenas a la lista sin seguir una secuencia. La colección SortedList utiliza la implementación de IComparable para ordenar las entradas de la lista, que se muestran a continuación siguiendo un orden ascendente de temperaturas.

using System;
using System.Collections.Generic;

public class Temperature : IComparable<Temperature>
{
    // Implement the CompareTo method. For the parameter type, Use 
    // the type specified for the type parameter of the generic 
    // IComparable interface. 
    //
    public int CompareTo(Temperature other)
    {
        // The temperature comparison depends on the comparison of the
        // the underlying Double values. Because the CompareTo method is
        // strongly typed, it is not necessary to test for the correct
        // object type.
        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 degreesKelvin)
    {
        this.Kelvin = degreesKelvin;
    }
}

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 code example produces 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.

*/

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

Compatible con: 2.0

.NET Compact Framework

Compatible con: 2.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft