Sdílet prostřednictvím


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

Definice

Porovná dva objekty a vrátí hodnotu označující, zda je jeden menší než, roven nebo větší než druhý.

 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

První objekt k porovnání

y
Object

Druhý objekt k porovnání

Návraty

Celé číslo se znaménkem, které označuje relativní hodnoty x a y, jak je znázorněno v následující tabulce.

Hodnota Význam
Menší než nulax je menší než y.
Žádnouxyse rovná .
Větší než nulax je větší než y.

Implementuje

Výjimky

x nebo y je typu, který nelze přetypovat na typ T.

-nebo-

x a y neimplementují obecné IComparable<T> rozhraní ani IComparable rozhraní.

Příklady

Následující příklad ukazuje, jak použít metodu IComparer.Compare k porovnání dvou objektů. Tento příklad je součástí většího příkladu poskytnutého Comparer<T> pro třídu .


// 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())

Poznámky

Tato metoda je obálkou pro metodu Compare(T, T) , takže obj musí být přetypována na typ určený obecným argumentem T aktuální instance. Pokud jej nelze přetypovat na T, ArgumentException je vyvolán .

Porovnání null s libovolným typem odkazu je povoleno a negeneruje výjimku. Při řazení null se objekt považuje za menší než jakýkoli jiný objekt.

Poznámky pro volající

Compare(T, T) a Equals(T, T) chovají se odlišně z hlediska citlivosti jazykové verze a rozlišování malých a malých písmen.

Pro porovnání StringComparer řetězců se doporučuje třída přes Comparer<String>. StringComparer Vlastnosti třídy vrací předdefinované instance, které provádějí porovnávání řetězců s různými kombinacemi jazykové verze a rozlišování velkých a malých písmen. Rozlišování malých a malých písmen a citlivost na jazykovou verzi jsou konzistentní mezi členy stejné StringComparer instance.

Další informace o porovnáních specifických pro jazykovou verzi najdete v System.Globalization tématech Obor názvů a Globalizace a lokalizace.

Platí pro

Viz také