Ler en inglés

Compartir por


IComparable Interfaz

Definición

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

C#
public interface IComparable
C#
[System.Runtime.InteropServices.ComVisible(true)]
public interface IComparable
Derivado
Atributos

Ejemplos

En el ejemplo siguiente se muestra la implementación de IComparable y el método necesario CompareTo .

C#
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

Comentarios

Esta interfaz se implementa por tipos cuyos valores se pueden ordenar o ordenar. Requiere que los tipos de implementación definan un único método, CompareTo(Object), 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. La implementación de la IComparable instancia se llama automáticamente mediante métodos como Array.Sort y ArrayList.Sort.

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

Valor Significado
Menor que cero La instancia actual precede al objeto especificado por el CompareTo método 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 CompareTo método .
Mayor que cero Esta instancia actual sigue el objeto especificado por el CompareTo método en el criterio de ordenación.

Todos los tipos numéricos (como Int32 y Double) implementan IComparable, como String, Chary DateTime. Los tipos personalizados también deben proporcionar su propia implementación de IComparable para permitir que las instancias de objeto se ordenen o ordenen.

Métodos

CompareTo(Object)

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.

Se aplica a

Produto Versións
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0