Comparer<T>.IComparer.Compare(Object, Object) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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.