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

Definitie

Vergelijkt twee objecten en retourneert een waarde die aangeeft of één kleiner is dan, gelijk is aan of groter is dan de andere.

 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

Parameters

x
Object

Het eerste object dat moet worden vergeleken.

y
Object

Het tweede object dat moet worden vergeleken.

Retouren

Een ondertekend geheel getal dat de relatieve waarden van x en y, zoals wordt weergegeven in de volgende tabel, aangeeft.

Waarde Betekenis
Kleiner dan nul x is kleiner dan y.
Nul x is ygelijk aan .
Groter dan nul x is groter dan y.

Implementeringen

Uitzonderingen

x of y is van een type dat niet kan worden gegoten om te typen T.

– of –

x en y implementeer niet de IComparable<T> algemene interface of de IComparable interface.

Voorbeelden

In het volgende voorbeeld ziet u hoe u de IComparer.Compare methode gebruikt om twee objecten te vergelijken. Dit voorbeeld maakt deel uit van een groter voorbeeld voor de Comparer<T> klasse.


// 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())

Opmerkingen

Deze methode is een wrapper voor de Compare(T, T) methode, dus obj moet worden omgezet naar het type dat is opgegeven door het algemene argument T van het huidige exemplaar. Als het niet kan Tworden gegoten, wordt er een ArgumentException gegooid.

Vergelijking null met een verwijzingstype is toegestaan en genereert geen uitzondering. Bij het sorteren null wordt beschouwd als kleiner dan elk ander object.

Notities voor bellers

Compare(T, T) en Equals(T, T) gedragen zich anders in termen van cultuurgevoeligheid en hoofdlettergevoeligheid.

Voor tekenreeksvergelijkingen wordt de StringComparer klasse aanbevolen.Comparer<String> Eigenschappen van de StringComparer klasse retourneren vooraf gedefinieerde exemplaren die tekenreeksvergelijkingen uitvoeren met verschillende combinaties van cultuurgevoeligheid en hoofdlettergevoeligheid. De hoofdlettergevoeligheid en cultuurgevoeligheid zijn consistent onder de leden van hetzelfde StringComparer exemplaar.

Zie de System.Globalization naamruimte en globalisatie en lokalisatie voor meer informatie over cultuurspecifieke vergelijkingen.

Van toepassing op

Zie ook