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

Definicja

Porównuje dwa obiekty i zwraca wartość wskazującą, czy jedna z nich jest mniejsza, równa lub większa od drugiej.Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other.

 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.The first object to compare.

y
Object

Drugi obiekt do porównania.The second object to compare.

Zwraca

Int32

Liczba całkowita ze znakiem, która wskazuje wartości względne x i y , jak pokazano w poniższej tabeli.A signed integer that indicates the relative values of x and y, as shown in the following table.

WartośćValue ZnaczenieMeaning
Mniej niż zeroLess than zero x jest mniejsze niż y .x is less than y.
ZeroZero x równa się y .x equals y.
Większe od zeraGreater than zero x jest większa niż y .x is greater than y.

Implementuje

Wyjątki

x lub y jest typu, którego nie można rzutować na typ T .x or y is of a type that cannot be cast to type T.

-lub--or- x i y nie implementuje IComparable<T> interfejsu generycznego ani IComparable interfejsu.x and y do not implement either the IComparable<T> generic interface or the IComparable interface.

Przykłady

Poniższy przykład pokazuje, jak używać IComparer.Compare metody do porównywania dwóch obiektów.The following example shows how to use the IComparer.Compare method to compare two objects. Ten przykład jest częścią większego przykładu dostarczonego dla Comparer<T> klasy.This example is part of a larger example provided for the Comparer<T> class.


// 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 musi być rzutowana na typ określony przez argument rodzajowy T bieżącego wystąpienia.This method is a wrapper for the Compare(T, T) method, so obj must be cast to the type specified by the generic argument T of the current instance. Jeśli nie można rzutować do T , ArgumentException jest zgłaszany.If it cannot be cast to T, an ArgumentException is thrown.

Porównywanie null z dowolnym typem referencyjnym jest dozwolone i nie generuje wyjątku.Comparing null with any reference type is allowed and does not generate an exception. Podczas sortowania null jest uznawana za mniej niż każdy inny obiekt.When sorting, null is considered to be less than any other object.

Uwagi dotyczące wywoływania

Compare(T, T) i System.Collections.Generic.EqualityComparer`1.Equals(\`0,\`0) zachowują się inaczej pod względem wielkości kultur i uwzględniania wielkości liter. Compare(T, T) and System.Collections.Generic.EqualityComparer`1.Equals(\`0,\`0) behave differently in terms of culture-sensitivity and case-sensitivity.

W przypadku porównań ciągów StringComparer zaleca się użycie klasy porównującej < > .For string comparisons, the StringComparer class is recommended over Comparer<String>. Właściwości StringComparer klasy zwracają wstępnie zdefiniowane wystąpienia, które wykonują porównania ciągów z różnymi kombinacjami czułości i rozróżnianiem wielkości liter.Properties of the StringComparer class return predefined instances that perform string comparisons with different combinations of culture-sensitivity and case-sensitivity. Wielkość liter i czułość kultury są spójne między elementami członkowskimi tego samego StringComparer wystąpienia.The case-sensitivity and culture-sensitivity are consistent among the members of the same StringComparer instance.

Aby uzyskać więcej informacji na temat porównań specyficznych dla kultury, zobacz System.Globalization przestrzeń nazw oraz globalizacja i lokalizacja.For more information on culture-specific comparisons, see the System.Globalization namespace and Globalization and Localization.

Dotyczy

Zobacz też