Comparer<T>.IComparer.Compare(Object, Object) Methode

Definition

Vergleicht zwei Objekte und gibt einen Wert zurück, der angibt, ob ein Wert niedriger, gleich oder größer als der andere Wert ist.

 virtual int System.Collections.IComparer.Compare(System::Object ^ x, System::Object ^ y) = System::Collections::IComparer::Compare;
int IComparer.Compare (object x, object y);
abstract member System.Collections.IComparer.Compare : obj * obj -> int
override this.System.Collections.IComparer.Compare : obj * obj -> int
Function Compare (x As Object, y As Object) As Integer Implements IComparer.Compare

Parameter

x
Object

Das erste zu vergleichende Objekt.

y
Object

Das zweite zu vergleichende Objekt.

Gibt zurück

Eine ganze Zahl mit Vorzeichen, die die relativen Werte von x und y angibt, wie in der folgenden Tabelle veranschaulicht.

Wert Bedeutung
Kleiner als 0 (null)x ist kleiner als y.
Zerox ist gleich y.
Größer als 0 (null)x ist größer als y.

Implementiert

Ausnahmen

x oder y weist einen Typ auf, der nicht in den Typ T umgewandelt werden kann.

- oder -

x und y implementieren weder die generische IComparable<T>-Schnittstelle noch die generische IComparable-Schnittstelle.

Beispiele

Das folgende Beispiel zeigt, wie Sie die IComparer.Compare -Methode verwenden, um zwei Objekte zu vergleichen. Dieses Beispiel ist Teil eines größeren Beispiels, das für die Comparer<T> -Klasse bereitgestellt wird.


// This explicit interface implementation
// compares first by the length.
// Returns -1 because the length of BoxA
// is less than the length of BoxB.
BoxLengthFirst LengthFirst = new BoxLengthFirst();

Comparer<Box> bc = (Comparer<Box>) LengthFirst;

Box BoxA = new Box(2, 6, 8);
Box BoxB = new Box(10, 12, 14);
int x = LengthFirst.Compare(BoxA, BoxB);
Console.WriteLine();
Console.WriteLine(x.ToString());

' This explicit interface implementation
' compares first by the length.
' Returns -1 because the length of BoxA
' is less than the length of BoxB.
Dim LengthFirst As New BoxLengthFirst()

Dim bc As Comparer(Of Box) = CType(LengthFirst, Comparer(Of Box))

Dim BoxA As New Box(2, 6, 8)
Dim BoxB As New Box(10, 12, 14)
Dim x As Integer = LengthFirst.Compare(BoxA, BoxB)
Console.WriteLine()
Console.WriteLine(x.ToString())

Hinweise

Diese Methode ist ein Wrapper für die Compare(T, T) -Methode. Daher obj muss in den Typ umgewandelt werden, der vom generischen Argument T des aktuellen instance angegeben wird. Wenn es nicht in Tumgewandelt werden kann, wird ein ArgumentException ausgelöst.

Der Vergleich null mit einem beliebigen Verweistyp ist zulässig und generiert keine Ausnahme. Wird beim Sortieren null als kleiner betrachtet als jedes andere Objekt.

Hinweise für Aufrufer

Compare(T, T) und Equals(T, T) verhalten sich in Bezug auf Kultursensitivität und Groß-/Kleinschreibung unterschiedlich.

Für Zeichenfolgenvergleiche wird die StringComparer -Klasse über Comparer<String>empfohlen. Eigenschaften der StringComparer -Klasse geben vordefinierte Instanzen zurück, die Zeichenfolgenvergleiche mit unterschiedlichen Kombinationen von Kultursensitivität und Groß-/Kleinschreibung durchführen. Die Groß-/Kleinschreibung und die Kultursensitivität sind bei den Mitgliedern derselben StringComparer instance konsistent.

Weitere Informationen zu kulturspezifischen Vergleichen finden Sie unter Namespace System.Globalization und Globalisierung und Lokalisierung.

Gilt für:

Weitere Informationen