Comparer<T>.IComparer.Compare(Object, Object) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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ž nula | x je menší než y .
|
Žádnou | x y se rovná .
|
Větší než nula | x 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.