Exporter (0) Imprimer
Développer tout

IComparable, interface générique

Remarque : cette interface est nouvelle dans le .NET Framework version 2.0.

Définit une méthode de comparaison généralisée qu'un type valeur ou qu'une classe implémente pour créer une méthode de comparaison spécifique au type et permettant de trier les instances.

Espace de noms : System
Assembly : mscorlib (dans mscorlib.dll)

public interface IComparable<T>
J#  prend en charge l'utilisation de types et de méthodes génériques mais pas la déclaration de nouveaux types et de méthodes génériques.
JScript ne prend pas en charge les types et les méthodes génériques.

Cette interface est implémentée par des types dont les valeurs peuvent être triées ; par exemple, les classes numeric et string. Un type valeur ou une classe implémente la méthode CompareTo pour créer une méthode de comparaison spécifique au type et appropriée au tri par exemple.

RemarqueRemarque

L'interface IComparable définit la méthode CompareTo, qui détermine l'ordre de tri des instances du type d'implémentation. L'interface IEquatable définit la méthode Equals, qui détermine l'égalité des instances du type d'implémentation.

Remarques à l'attention des implémenteurs Remplacez le paramètre de type de l'interface IComparable par le type qui implémente cette interface.

L'exemple de code suivant illustre l'implémentation de IComparable pour un objet Temperature simple. L'exemple crée une collection SortedList de chaînes avec les clés d'objet Temperature et ajoute plusieurs paires de températures et de chaînes hors séquence. La collection SortedList utilise l'implémentation IComparable pour trier les entrées de liste, qui sont alors affichées par ordre de température croissante.

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 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

.NET Framework

Prise en charge dans : 2.0

.NET Compact Framework

Prise en charge dans : 2.0

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft