Comparer<T>.IComparer.Compare(Object, Object) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 .
|
Zero | x 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 T
umgewandelt 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.