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

Definicja

Porównuje dwa obiekty i zwraca wartość wskazującą, czy jedna jest mniejsza, równa lub 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

Int32

Liczba całkowita ze znakiem 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 równa ysię .
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ć do typu 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ą metody Compare(T, T) , dlatego obj należy rzutować na typ określony przez argument T ogólny bieżącego wystąpienia. Jeśli nie można go rzutować do T, ArgumentException jest zgłaszany.

Porównywanie null z dowolnym typem odwołania jest dozwolone i nie generuje wyjątku. Podczas sortowania uważa się, null że jest on mniejszy niż jakikolwiek inny obiekt.

Uwagi dotyczące wywoływania

Compare(T, T) i Equals(T, T) zachowywać się inaczej pod względem wrażliwości kulturowej i wrażliwości na wielkość liter.

W przypadku porównań ciągów klasa jest zalecana StringComparer za pośrednictwem funkcji ComparerString<>. 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 uwzględniania wielkości liter. Wielkość 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 przestrzeni nazw i globalizacji i lokalizacji.

Dotyczy

Zobacz też