IComparable (generische Schnittstelle)
Assembly: mscorlib (in mscorlib.dll)
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.
Hinweis |
|---|
| 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. |
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 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
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Hinweis