Interfaz genérica IComparable
Ensamblado: mscorlib (en mscorlib.dll)
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.
Nota |
|---|
| 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. |
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.
Nota