Aplicaciones de Windows
Collapse the table of content
Expand the table of content
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original
Información
El tema que ha solicitado se muestra abajo. Sin embargo, este tema no se encuentra en la biblioteca.

IComparable<T> (Interfaz)

 

Define un método de comparación generalizado que implementa un tipo de valor o una clase para crear un método de comparación específico del tipo de ordenación o clasificación de sus instancias.

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

public interface IComparable<in T>

Parámetros de tipo

T

El tipo de objeto a comparar.

NombreDescripción
System_CAPS_pubmethodCompareTo(T)

Compara la instancia actual con otro objeto del mismo tipo y devuelve un entero que indica si la posición de la instancia actual es anterior, posterior o igual que la del otro objeto en el criterio de ordenación.

Esta interfaz se implementa mediante tipos cuyos valores se pueden ordenar y proporciona un método de comparación fuertemente tipado para ordenar los miembros de un objeto de colección genérica.Por ejemplo, un número puede ser mayor que un segundo número y una cadena puede aparecer en orden alfabético antes que otro.Requiere que implementar los tipos definan un solo método, CompareTo(T), que indica si la posición de la instancia actual en el criterio de ordenación es anterior, posterior o igual que un segundo objeto del mismo tipo.Normalmente, no se llama al método directamente desde el código del desarrollador.En su lugar, se llama automáticamente los métodos como List<T>.Sort() y Add.

Normalmente, los tipos que proporcionan una IComparable<T> implementación también implementan la IEquatable<T> interfaz.El IEquatable<T> interfaz define la Equals método, que determina la igualdad de instancias del tipo de implementación.

La implementación de la CompareTo(T) método debe devolver un Int32 que tiene uno de tres valores, como se muestra en la tabla siguiente.

Valor

Significado

Menor que cero

Este objeto precede el objeto especificado por el CompareTo método en el criterio de ordenación.

Cero

La instancia actual se produce en la misma posición en el criterio de ordenación que el objeto especificado por el CompareTo argumento del método.

Mayor que cero

La instancia actual sigue al objeto especificado por el CompareTo argumento del método en el criterio de ordenación.

Todos los tipos numéricos (como Int32 y Double) implementar IComparable<T>igual que String, Char, y DateTime.Tipos personalizados también deben proporcionar su propia implementación de IComparable<T> para permitir ordenar las instancias de objetos.

Notas para los implementadores:

Reemplace el parámetro de tipo de la IComparable<T> interfaz con el tipo que implementa esta interfaz.

Si implementa IComparable<T>, debería sobrecargar el op_GreaterThan, op_GreaterThanOrEqual, op_LessThan, y op_LessThanOrEqual operadores para devolver valores que son coherentes con CompareTo.Además, también debe implementar IEquatable<T>.Consulte la IEquatable<T> artículo para obtener más información.

En el ejemplo de código siguiente se ilustra la implementación de IComparable<T> para una sencilla Temperature objeto.El ejemplo se crea un SortedList<TKey, TValue> colección de cadenas con Temperature claves de objeto, y agrega varios pares de temperaturas y cadenas a la lista fuera de secuencia.En la llamada a la Add (método), el SortedList<TKey, TValue> colección utiliza la IComparable<T> implementación para ordenar las entradas de la lista, que se muestran en orden creciente de temperatura.

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.
*/

Universal Windows Platform
Disponible desde 4.5
.NET Framework
Disponible desde 2.0
Portable Class Library
Compatible con: portable .NET platforms
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar:
© 2016 Microsoft