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