Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

IComparable (generische Schnittstelle)

Definiert eine allgemeine Vergleichsmethode, die von einem Werttyp oder einer Klasse für die Erstellung einer typspezifischen Vergleichsmethode zum Sortieren von Instanzen implementiert wird.

Namespace: System
Assembly: mscorlib (in mscorlib.dll)

public interface IComparable<T>
J# unterstützt die Verwendung von generischen Typen und Methoden, aber nicht die Deklaration von neuen generischen Typen oder Methoden.
JScript unterstützt keine generischen Typen oder Methoden.
Nicht zutreffend.

Typparameter

T

Der Typ der zu vergleichenden Objekte.

Diese Schnittstelle wird von Typen implementiert, deren Werte geordnet werden können, beispielsweise numerische Typen und Zeichenfolgenklassen. Eine Werttyp oder eine Klasse implementiert die CompareTo-Methode zur Erstellung einer typspezifischen Vergleichsmethode, die sich beispielsweise zum Sortieren o. ä. eignet.

HinweisHinweis:

Die IComparable-Schnittstelle definiert die CompareTo-Methode, die die Sortierreihenfolge von Instanzen des implementierenden Typs bestimmt. Die IEquatable-Schnittstelle definiert die Equals-Methode, die die Gleichheit von Instanzen des implementierenden Typs bestimmt.

Hinweise zur Implementierung: Ersetzen Sie den Typparameter der IComparable-Schnittstelle mit dem Typ, der diese Schnittstelle implementiert.

Im folgenden Codebeispiel wird die Implementierung von IComparable für ein einfaches Temperature-Objekt veranschaulicht. Im Beispiel wird eine SortedList-Auflistung von Zeichenfolgen mit Temperature-Objektschlüsseln erstellt, und es werden der Liste mehrere Paare aus Temperaturen und Zeichenfolgen in ungeordneter Reihenfolge hinzugefügt. Die SortedList-Auflistung verwendet die IComparable-Implementierung zum Sortieren der Listeneinträge, die dann in der aufsteigender Reihenfolge nach Temperatur angezeigt werden.

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 für Pocket PC, Windows Mobile für 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 wird unter Windows Vista, Microsoft Windows XP SP2 und Windows Server 2003 SP1 unterstützt.

.NET Framework

Unterstützt in: 3.0, 2.0

.NET Compact Framework

Unterstützt in: 2.0

XNA Framework

Unterstützt in: 1.0
Anzeigen: