Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Interfaccia IComparable

 

Data di pubblicazione: ottobre 2016

Definisce un metodo di confronto generalizzato specifico del tipo che viene implementato da un tipo di valore o da una classe per l'ordinamento delle istanze.

Spazio dei nomi:   System
Assembly:  mscorlib (in mscorlib.dll)

[ComVisibleAttribute(true)]
public interface IComparable

NomeDescrizione
System_CAPS_pubmethodCompareTo(Object)

Confronta l'istanza corrente con un altro oggetto dello stesso tipo e restituisce un intero che indica se l'istanza corrente precede, segue o si trova nella stessa posizione dell'altro oggetto all'interno dell'ordinamento.

Questa interfaccia è implementata da tipi i cui valori possono essere ordinati. Richiede che i tipi di implementazione definiscono un singolo metodo, CompareTo(Object), che indica se la posizione dell'istanza corrente nella sequenza di ordinamento è precedente, successiva o uguale a quella un secondo oggetto dello stesso tipo. L'istanza IComparable implementazione viene chiamata automaticamente dai metodi, ad esempio Array.Sort e ArrayList.Sort.

L'implementazione del CompareTo(Object) metodo deve restituire un Int32 che presenta uno dei tre valori, come illustrato nella tabella seguente.

Valore

Significato

Minore di zero

L'istanza corrente precede l'oggetto specificato da di CompareTo metodo nell'ordinamento.

Zero

L'istanza corrente è nella stessa posizione dell'ordinamento dell'oggetto specificato per il CompareTo metodo.

Maggiore di zero

L'istanza corrente segue l'oggetto specificato da di CompareTo metodo nell'ordinamento.

Tutti i tipi numerici (ad esempio Int32 e Double) implementare IComparable, come String, Char, e DateTime. Tipi personalizzati devono anche fornire la propria implementazione di IComparable per abilitare le istanze di oggetto per l'ordinamento.

Nell'esempio seguente viene illustrata l'implementazione di IComparable e CompareTo metodo.

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

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: