Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

IComparable-Schnittstelle

 

Veröffentlicht: Oktober 2016

Definiert eine generalisierte, typspezifische Vergleichsmethode, die von einem Werttyp oder von einer Klasse implementiert wird, um die eigenen Instanzen zu sortieren.

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

[ComVisibleAttribute(true)]
public interface IComparable

NameBeschreibung
System_CAPS_pubmethodCompareTo(Object)

Vergleicht die aktuelle Instanz mit einem anderen Objekt vom selben Typ und gibt eine ganze Zahl zurück, die angibt, ob die aktuelle Instanz in der Sortierreihenfolge vor oder nach dem anderen Objekt oder an derselben Position auftritt.

Diese Schnittstelle wird von Typen implementiert, deren Werte angeordnet oder sortiert werden können. Sie erfordert, dass implementierende Typen definieren Sie eine einzelne Methode CompareTo(Object), Wert, der angibt, ob die Position der aktuellen Instanz in der Sortierreihenfolge vor, nach oder ein zweites Objekt des gleichen Typs identisch. Der Instanz IComparable Implementierung wird automatisch aufgerufen, indem Sie Methoden wie z. B. Array.Sort und ArrayList.Sort.

Die Implementierung der CompareTo(Object) Methodenrückgabewert muss ein Int32 , besitzt einen von drei Werten, wie in der folgenden Tabelle gezeigt.

Wert

Bedeutung

Kleiner als 0 (Null)

Die aktuelle Instanz vorangestellt ist, das Objekt, das gemäß der CompareTo Methode in der Sortierreihenfolge.

0 (Null)

Diese aktuelle Instanz tritt an derselben Position wie das vom angegebenen Objekt in der Sortierreihenfolge der CompareTo Methode.

Größer als 0 (Null)

Diese aktuelle Instanz folgt das Objekt, das gemäß der CompareTo Methode in der Sortierreihenfolge.

Alle numerischen Typen (z. B. Int32 und Double) implementieren IComparableGleiches gilt für String, Char, und DateTime. Benutzerdefinierte Typen sollten auch eine eigene Implementierung von bereitstellen IComparable , damit Objektinstanzen angeordnet oder sortiert werden.

Das folgende Beispiel veranschaulicht die Implementierung der IComparable und der erforderlichen CompareTo Methode.

using System;
using System.Collections;

public class Temperature : IComparable 
{
    // The temperature value
    protected double temperatureF;

    public int CompareTo(object obj) {
        if (obj == null) return 1;

        Temperature otherTemperature = obj as Temperature;
        if (otherTemperature != null) 
            return this.temperatureF.CompareTo(otherTemperature.temperatureF);
        else
           throw new ArgumentException("Object is not a Temperature");
    }

    public double Fahrenheit 
    {
        get 
        {
            return this.temperatureF;
        }
        set {
            this.temperatureF = value;
        }
    }

    public double Celsius 
    {
        get 
        {
            return (this.temperatureF - 32) * (5.0/9);
        }
        set 
        {
            this.temperatureF = (value * 9.0/5) + 32;
        }
    }
}

public class CompareTemperatures
{
   public static void Main()
   {
      ArrayList temperatures = new ArrayList();
      // Initialize random number generator.
      Random rnd = new Random();

      // Generate 10 temperatures between 0 and 100 randomly.
      for (int ctr = 1; ctr <= 10; ctr++)
      {
         int degrees = rnd.Next(0, 100);
         Temperature temp = new Temperature();
         temp.Fahrenheit = degrees;
         temperatures.Add(temp);   
      }

      // Sort ArrayList.
      temperatures.Sort();

      foreach (Temperature temp in temperatures)
         Console.WriteLine(temp.Fahrenheit);

   }
}
// The example displays the following output to the console (individual
// values may vary because they are randomly generated):
//       2
//       7
//       16
//       17
//       31
//       37
//       58
//       66
//       72
//       95

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: