0 von 1 fanden dies hilfreich - Dieses Thema bewerten.

IComparable<T>-Schnittstelle

Aktualisiert: November 2007

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 APIs, aber nicht die Deklaration von neuen generischen APIs.
JScript unterstützt keine generischen Typen oder Methoden.

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.

4d7sx9hd.alert_note(de-de,VS.90).gifHinweis:

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

Die IComparable<T>-Schnittstelle stellt eine stark typisierte Vergleichsmethode zum Sortieren von Membern eines generischen Auflistungsobjekts bereit. Aus diesem Grund wird sie normalerweise nicht direkt aus Entwicklercode aufgerufen. Stattdessen wird sie automatisch beispielsweise von der List<T>.Sort()-Methode und der Add-Methode aufgerufen.

Hinweise zur Implementierung:

Ersetzen Sie den Typparameter der IComparable<T>-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<TKey, TValue>-Auflistung von Zeichenfolgen mit Temperature-Objektschlüsseln erstellt, und es werden der Liste mehrere Paare aus Temperaturen und Zeichenfolgen in ungeordneter Reihenfolge hinzugefügt. Beim Aufruf der Add-Methode verwendet die SortedList<TKey, TValue>-Auflistung die IComparable<T>-Implementierung zum Sortieren der Listeneinträge, die dann in 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 Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile für Smartphone, Windows Mobile für Pocket PC, Xbox 360

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0, 2.0

.NET Compact Framework

Unterstützt in: 3.5, 2.0

XNA Framework

Unterstützt in: 2.0, 1.0
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
© 2013 Microsoft. Alle Rechte vorbehalten.