Udostępnij za pośrednictwem


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

Definicja

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ż zerox wartość jest mniejsza niż y.
Zeroxyrówna się .
Większe od zerax 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 Telementu , 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ę.

Dotyczy

Zobacz też