Questa pagina è stata utile?
I suggerimenti relativi al contenuto di questa pagina sono importanti. Comunicaceli.
Altri suggerimenti?
1500 caratteri rimanenti
IComparable (interfaccia generica)
Collapse the table of content
Expand the table of content

IComparable (interfaccia generica)

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

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

public interface IComparable<T>
J# supporta l'utilizzo di tipi e metodi generici ma non la dichiarazione di nuovi.
JScript non supporta tipi e metodi generici.
Non applicabile.

Parametri di tipo

T

Tipo di oggetti da confrontare.

Questa interfaccia viene implementata da tipi i cui valori possono essere ordinati, ad esempio le classi di tipo numerico e stringa. Un tipo di valore o una classe implementano il metodo CompareTo per creare un metodo di confronto specifico del tipo adatto per l'esecuzione di operazioni come l'ordinamento.

NotaNota:

L'interfaccia IComparable definisce il metodo CompareTo che consente di determinare l'ordinamento delle istanze del tipo utilizzato nell'implementazione. L'interfaccia IEquatable definisce il metodo Equals che consente di determinare l'uguaglianza fra istanze del tipo utilizzato nell'implementazione.

Note per gli implementatori: Sostituire il parametro relativo al tipo dell'interfaccia IComparable con il tipo che implementa l'interfaccia corrente.

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 in cui gli oggetti Temperature sono utilizzati come chiavi e come aggiungere all'elenco diverse coppie di temperature e stringhe fuori sequenza. Nell'insieme SortedList viene utilizzata l'implementazione dell'interfaccia IComparable 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 CompareTo method. For the parameter type, Use 
    // the type specified for the type parameter of the generic 
    // IComparable interface. 
    //
    public int CompareTo(Temperature other)
    {
        // The temperature comparison depends on the comparison of the
        // the underlying Double values. Because the CompareTo method is
        // strongly typed, it is not necessary to test for the correct
        // object type.
        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 degreesKelvin)
    {
        this.Kelvin = degreesKelvin;
    }
}

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 code example produces 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.

*/

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile per Pocket PC, Windows Mobile per Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

Microsoft .NET Framework 3.0 è supportato in Windows Vista, Microsoft Windows XP SP2 e Windows Server 2003 SP1.

.NET Framework

Supportato in:

.NET Compact Framework

Supportato in:

XNA Framework

Supportato in:

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft