Exportieren (0) Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

IComparable(Of T)-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)

'Declaration
Public Interface IComparable(Of In T)

Typparameter

In T

Der Typ der zu vergleichenden Objekte.

Dieser Typparameter ist Contravariant. Das heißt, Sie können entweder den angegebenen Typ oder einen weniger abgeleiteten Typ verwenden. Weitere Informationen zu Ko- und Kontravarianz finden Sie unter Kovarianz und Kontravarianz in Generika.

Der IComparable(Of T)-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsCompareToVergleicht das aktuelle Objekt mit einem anderen Objekt desselben Typs.
Zum Seitenanfang

Diese Schnittstelle wird von Typen, deren Werte sortiert werden können, hauptsächlich zum Sortieren implementiert. Beispielsweise kann eine Zahl größer als eine zweite Zahl sein, und eine Zeichenfolge kann vor anderen in alphabetischer Reihenfolge angezeigt werden. Eine Werttyp oder eine Klasse implementiert die CompareTo(T)-Methode zur Erstellung einer typspezifischen Vergleichsmethode, die sich beispielsweise zum Sortieren o. ä. eignet.

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

Die Implementierung der CompareTo(T)-Methode muss ein Int32 zurückgeben, das einen von drei Werten hat, wie in der folgenden Tabelle gezeigt.

Wert

Bedeutung

Kleiner als 0

Dieses Objekt ist kleiner als das von der CompareTo-Methode angegebene Objekt.

Zero

Dieses Objekt ist gleich dem Methodenparameter.

Größer als 0 (null)

Dieses Objekt ist größer als der Methodenparameter.

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(Of 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.

Wenn Sie IComparable(T) implementieren, sollten Sie op_GreaterThan, op_GreaterThanOrEqual, op_LessThan und op_LessThanOrEqual zu überladen Operatoren den Rückgabewerten, die mit CompareTo konsistent sind. Außerdem sollten Sie außerdem IEquatable(Of T) implementieren. Siehe den IEquatable(Of T) Artikel für vollständige Informationen.

Das folgende Codebeispiel veranschaulicht die Implementierung von IComparable(T) für ein einfaches Temperature-Objekt. Im Beispiel wird eine SortedList(Of 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(Of TKey, TValue)-Auflistung die IComparable(T)-Implementierung zum Sortieren der Listeneinträge, die dann in aufsteigender Reihenfolge nach Temperatur angezeigt werden.


Imports System.Collections.Generic

Public Class Temperature
    Implements IComparable(Of Temperature)

    ' Implement the generic CompareTo method with the Temperature class 
    ' as the type parameter. 
    '
    Public Overloads Function CompareTo(ByVal other As Temperature) As Integer _
        Implements IComparable(Of Temperature).CompareTo

        ' If other is not a valid object reference, this instance is greater.
        If other Is Nothing Then Return 1

        ' The temperature comparison depends on the comparison of the
        ' the underlying Double values. 
        Return m_value.CompareTo(other.m_value)
    End Function

    ' The underlying temperature value.
    Protected m_value As Double = 0.0

    Public ReadOnly Property Celsius() As Double
        Get
            Return m_value - 273.15
        End Get
    End Property

    Public Property Kelvin() As Double
        Get
            Return m_value
        End Get
        Set(ByVal Value As Double)
            If value < 0.0 Then 
                Throw New ArgumentException("Temperature cannot be less than absolute zero.")
            Else
                m_value = Value
            End If
        End Set
    End Property

    Public Sub New(ByVal kelvins As Double)
        Me.Kelvin = kelvins 
    End Sub
End Class

Public Class Example
    Public Shared Sub Main()
        Dim temps As New SortedList(Of 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")

        For Each kvp As KeyValuePair(Of Temperature, String) In temps
            Console.WriteLine("{0} is {1} degrees Celsius.", kvp.Value, kvp.Key.Celsius)
        Next
    End Sub
End Class

' The example displays 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.
'


.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

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

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft