Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Metodo IComparable<T>.CompareTo

Confronta l'oggetto corrente con un altro oggetto dello stesso tipo.

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

int CompareTo(
	T other
)

Parametri

other
Tipo: T
Oggetto da confrontare con l'oggetto corrente.

Valore restituito

Tipo: System.Int32
Valore che indica l'ordine relativo degli oggetti confrontati. Il valore restituito ha i seguenti significati:

Valore

Significato

Minore di zero

Questo oggetto è minore del parametro other.

Zero

Questo oggetto è uguale al parametro other.

Maggiore di zero

Questo oggetto è maggiore del parametro other.

CompareTo fornisce un metodo di confronto fortemente tipizzato per ordinare i membri di un oggetto insieme generico. Pertanto, non è in genere destinata a essere chiamata direttamente dal codice dello sviluppatore. Viene invece chiamata automaticamente da metodi quali List<T>.Sort() e Add.

Questo metodo è solo una definizione e deve essere implementato da una classe o un tipo di valore specifico per produrre un effetto. Il significato dei confronti "minore di", "uguale a" e "maggiore di" dipende dall'implementazione specifica.

Per definizione, qualsiasi oggetto risulta maggiore di null e due riferimenti null risultano uguali tra loro.

Note per gli implementatori

Per gli oggetti A, B e C devono essere osservate le seguenti condizioni:

A.CompareTo(A) deve restituire zero.

Se A.CompareTo(B) restituisce zero, anche B.CompareTo(A) dovrà restituire zero.

Se A.CompareTo(B) restituisce zero e B.CompareTo(C) restituisce zero, anche A.CompareTo(C) dovrà restituire zero.

Se A.CompareTo(B) restituisce un valore diverso da zero, B.CompareTo(A) dovrà restituire un valore di segno opposto.

Se A.CompareTo(B) restituisce un valore x diverso da zero e B.CompareTo(C) restituisce un valore y dello stesso segno di x, A.CompareTo(C) dovrà restituire un valore dello stesso segno di x e y.

Note per i chiamanti

Utilizzare il metodo CompareTo per definire l'ordine delle istanze di una classe.

Nell'esempio di codice riportato di seguito viene illustrata l'implementazione dell'interfaccia IComparable per un oggetto Temperature semplice. In particolare, viene mostrato come creare un insieme di stringhe SortedList<TKey, TValue> in cui gli oggetti Temperature sono utilizzati come chiavi e come aggiungere all'elenco diverse coppie di temperature e stringhe fuori sequenza. Nella chiamata al metodo Add, l'insieme SortedList<TKey, TValue> utilizza l'implementazione dell'interfaccia IComparable<T> per ordinare le voci dell'elenco, che vengono quindi visualizzate in ordine di temperatura crescente.


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


.NET Framework

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Store

Supportato in: Windows 8

.NET per applicazioni Windows Phone

Supportato in: 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 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft