Comparer<T>.IComparer.Compare(Object, Object) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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.