CompareTo Método (T)
Collapse the table of content
Expand the table of content
Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

IComparable<T>.CompareTo (Método) (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.

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

int CompareTo(
	T other
)

Parámetros

other

Objeto que se va a comparar con esta instancia.

Valor devuelto

Type: System.Int32

Un valor que indica el orden relativo de los objetos que se están comparando.El valor devuelto tiene los siguientes significados:

Valor

Significado

Menor que cero

Esta instancia es anterior a other en el criterio de ordenación.

Cero

Esta instancia se produce en la misma posición del criterio de ordenación que other.

Mayor que cero

Esta instancia sigue a other en el criterio de ordenación.

CompareToProporciona un método de comparación fuertemente tipado para ordenar los miembros de un objeto de colección genérica.Por este motivo, normalmente no se llama directamente desde el código del desarrollador.En su lugar, se llama automáticamente los métodos como List<T>.Sort() y Add.

Este método sólo es una definición y debe implementarse mediante un tipo específico de clase o valor tenga efecto.El significado de las comparaciones que se especifica en la sección ("precede a", "que se produce en la misma posición que" y "sigue) depende de la implementación concreta de valores devueltos.

Por definición, cualquier objeto es mayor que null, y dos referencias nulas son iguales entre sí.

Notas para los implementadores:

Para los objetos A, B y C, deben cumplirse las siguientes condiciones:

A.CompareTo(A)se debe devolver cero.

Si A.CompareTo(B) , a continuación, devuelve cero B.CompareTo(A) debe devolver cero.

Si A.CompareTo(B) devuelve cero y B.CompareTo(C) , a continuación, devuelve cero A.CompareTo(C) debe devolver cero.

Si A.CompareTo(B) devuelve un valor distinto de cero, a continuación, B.CompareTo(A) debe devolver un valor de signo contrario.

Si A.CompareTo(B) devuelve un valor x que no es igual a cero, y B.CompareTo(C) devuelve un valor y del mismo signo que x, a continuación, A.CompareTo(C) debe devolver un valor del mismo signo como x y y.

Notas para los llamadores:

Utilice la CompareTo método para determinar el orden de las instancias de una clase.

En el ejemplo de código siguiente se ilustra la implementación de IComparable 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