Comparer<T>.IComparer.Compare(Object, Object) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Porównuje dwa obiekty i zwraca wartość wskazującą, czy jedna jest mniejsza, równa, czy większa niż druga.
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
Parametry
- x
- Object
Pierwszy obiekt do porównania.
- y
- Object
Drugi obiekt do porównania.
Zwraca
Podpisana liczba całkowita wskazująca względne wartości x
i y
, jak pokazano w poniższej tabeli.
Wartość | Znaczenie |
---|---|
Mniej niż zero | x wartość jest mniejsza niż y .
|
Zero | x y równa się .
|
Większe od zera | x wartość jest większa niż y .
|
Implementuje
Wyjątki
x
lub y
jest typem, którego nie można rzutować na typ T
.
-lub-
x
i y
nie implementują interfejsu IComparable<T> ogólnego ani interfejsu IComparable .
Przykłady
W poniższym przykładzie pokazano, jak używać IComparer.Compare metody do porównywania dwóch obiektów. Ten przykład jest częścią większego przykładu udostępnionego Comparer<T> dla klasy.
// 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.
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())
Uwagi
Ta metoda jest otoką dla Compare(T, T) metody, dlatego obj
należy rzutować do typu określonego przez argument ogólny T
bieżącego wystąpienia. Jeśli nie można go rzutować do T
elementu , ArgumentException jest zgłaszany.
Porównanie null
z dowolnym typem odwołania jest dozwolone i nie generuje wyjątku. Podczas sortowania uważa się, null
że jest mniej niż jakikolwiek inny obiekt.
Uwagi dotyczące wywoływania
Compare(T, T) i Equals(T, T) zachowują się inaczej pod względem poufności kultury i poufności liter.
W przypadku porównań ciągów klasa jest zalecana przez Comparer<String>
metodę StringComparer . StringComparer Właściwości klasy zwracają wstępnie zdefiniowane wystąpienia, które wykonują porównania ciągów z różnymi kombinacjami poufności kultury i poufności liter. Wrażliwość wielkości liter i wrażliwość kulturowa są spójne wśród elementów członkowskich tego samego StringComparer wystąpienia.
Aby uzyskać więcej informacji na temat porównań specyficznych dla kultury, zobacz System.Globalization przestrzeń nazw i globalizację i lokalizację.