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

Definition

Jämför två objekt och returnerar ett värde som anger om det ena är mindre än, lika med eller större än det andra.

 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

Parametrar

x
Object

Det första objektet som ska jämföras.

y
Object

Det andra objektet att jämföra.

Returer

Ett signerat heltal som anger de relativa värdena x för och y, enligt följande tabell.

Värde Menande
Mindre än noll x är mindre än y.
Noll x är lika med y.
Större än noll x är större än y.

Implementeringar

Undantag

x eller y är av en typ som inte kan gjutas för att skriva T.

-eller-

x och y implementera inte antingen det IComparable<T> generiska gränssnittet eller IComparable gränssnittet.

Exempel

I följande exempel visas hur du använder IComparer.Compare metoden för att jämföra två objekt. Det här exemplet är en del av ett större exempel som tillhandahålls Comparer<T> för klassen.


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

Kommentarer

Den här metoden är en omslutning för Compare(T, T) metoden, så obj den måste omvandlas till den typ som anges av det allmänna argumentet T för den aktuella instansen. Om det inte kan kastas till T, kastas en ArgumentException .

Det är tillåtet att null jämföra med alla referenstyper och genererar inget undantag. Vid sortering null anses vara mindre än något annat objekt.

Anteckningar till anropare

Compare(T, T) och Equals(T, T) beter sig annorlunda när det gäller kulturkänslighet och skiftlägeskänslighet.

För strängjämförelser StringComparer rekommenderas klassen över Comparer<String>. Egenskaperna för StringComparer klassen returnerar fördefinierade instanser som utför strängjämförelser med olika kombinationer av kulturkänslighet och skiftlägeskänslighet. Skiftlägeskänsligheten och kulturkänsligheten är konsekventa bland medlemmarna i samma StringComparer instans.

Mer information om kulturspecifika jämförelser finns i System.Globalization namnområdet och Globalisering och lokalisering.

Gäller för

Se även