Información
El tema que ha solicitado se muestra abajo. Sin embargo, este tema no se encuentra en la biblioteca.

IComparable (Interfaz)

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

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

[ComVisibleAttribute(true)]
public interface IComparable

El tipo IComparable expone los siguientes miembros.

  NombreDescripción
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsCompareToCompara 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.
Arriba

Esta interfaz se implementa mediante tipos cuyos valores se pueden ordenar. Requiere que al implementar los tipos, se defina un método único, CompareTo(Object), que indica si la posición de la instancia actual en el criterio de ordenación es anterior, posterior o igual a un segundo objeto del mismo tipo. Métodos como Array.Sort y ArrayList.Sort llaman automáticamente a la implementación IComparable de la instancia.

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

Valor

Significado

Menor que cero

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

Cero

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

Mayor que cero

Esta instancia actual sigue el objeto especificado por el método CompareTo en el criterio de ordenación.

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

En el siguiente ejemplo se muestra el uso de IComparable y el método CompareTo necesario.


using System;
using System.Collections;

public class Temperature : IComparable 
{
    // The temperature value
    protected double temperatureF;

    public int CompareTo(object obj) {
        if (obj == null) return 1;

        Temperature otherTemperature = obj as Temperature;
        if (otherTemperature != null) 
            return this.temperatureF.CompareTo(otherTemperature.temperatureF);
        else
           throw new ArgumentException("Object is not a Temperature");
    }

    public double Fahrenheit 
    {
        get 
        {
            return this.temperatureF;
        }
        set {
            this.temperatureF = value;
        }
    }

    public double Celsius 
    {
        get 
        {
            return (this.temperatureF - 32) * (5.0/9);
        }
        set 
        {
            this.temperatureF = (value * 9.0/5) + 32;
        }
    }
}

public class CompareTemperatures
{
   public static void Main()
   {
      ArrayList temperatures = new ArrayList();
      // Initialize random number generator.
      Random rnd = new Random();

      // Generate 10 temperatures between 0 and 100 randomly.
      for (int ctr = 1; ctr <= 10; ctr++)
      {
         int degrees = rnd.Next(0, 100);
         Temperature temp = new Temperature();
         temp.Fahrenheit = degrees;
         temperatures.Add(temp);   
      }

      // Sort ArrayList.
      temperatures.Sort();

      foreach (Temperature temp in temperatures)
         Console.WriteLine(temp.Fahrenheit);

   }
}
// The example displays the following output to the console (individual
// values may vary because they are randomly generated):
//       2
//       7
//       16
//       17
//       31
//       37
//       58
//       66
//       72
//       95


.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

.NET para aplicaciones de Windows Phone

Compatible con: 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 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

Mostrar:
© 2014 Microsoft