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

Definition

Vergleicht zwei Objekte und gibt einen Wert zurück, der angibt, ob ein Objekt kleiner als, gleich oder größer als der andere 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 signierte ganze Zahl, die die relativen Werte von x und y, wie in der folgenden Tabelle dargestellt, angibt.

Wert: Bedeutung
Kleiner als Null x ist kleiner als y.
Null x entspricht y.
Größer als Null x ist größer als y.

Implementiert

Ausnahmen

x oder y ist von einem Typ, der nicht in den Typ Tumwandeln kann.

-oder-

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

Beispiele

Das folgende Beispiel zeigt, wie die Methode zum Vergleichen von zwei Objekten verwendet IComparer.Compare wird. 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.
let LengthFirst = BoxLengthFirst()

let bc = LengthFirst :> Comparer<Box>

let BoxA = Box(2, 6, 8)
let BoxB = Box(10, 12, 14)
let x = LengthFirst.Compare(BoxA, BoxB)
printfn $"\n{x}"

' 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

Bei dieser Methode handelt es sich um einen Wrapper für die Compare(T, T) Methode. Sie müssen also obj in den vom generischen Argument T der aktuellen Instanz angegebenen Typ umwandeln. Wenn dies nicht möglich Tist, wird ein ArgumentException Wurf ausgelöst.

Der Vergleich null mit einem beliebigen Verweistyp ist zulässig und generiert keine Ausnahme. Bei der Sortierung gilt dies null als kleiner als jedes andere Objekt.

Hinweise für Aufrufer

Compare(T, T) und verhalten sich in Bezug auf Kulturempfindlichkeit und Equals(T, T) Groß-/Kleinschreibung anders.

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

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

Gilt für:

Weitere Informationen