Comparer<T>.IComparer.Compare(Object, Object) Méthode

Définition

Compare deux objets et retourne une valeur indiquant si un objet est inférieur, égal ou supérieur à l’autre.

 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

Paramètres

x
Object

Premier objet à comparer.

y
Object

Deuxième objet à comparer.

Retours

Entier signé qui indique les valeurs relatives de x et y, comme indiqué dans le tableau suivant.

Valeur Signification
Inférieur à zéro x est inférieur à y.
Zéro x est égal à y.
Supérieur à zéro x est supérieur à y.

Implémente

Exceptions

x ou y est d’un type qui ne peut pas être converti en type T.

- ou -

x et y n’implémentez pas l’interface IComparable<T> générique ou l’interface IComparable .

Exemples

L’exemple suivant montre comment utiliser la IComparer.Compare méthode pour comparer deux objets. Cet exemple fait partie d’un exemple plus large fourni pour la Comparer<T> classe.


// 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.
let LengthFirst = BoxLengthFirst()

let bc = LengthFirst :> Comparer<Box>

let BoxA = Box(2, 6, 8)
let BoxB = Box(10, 12, 14)
let x = LengthFirst.Compare(BoxA, BoxB)
printfn $"\n{x}"

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

Remarques

Cette méthode est un wrapper pour la Compare(T, T) méthode. Elle doit donc obj être convertie en type spécifié par l’argument T générique de l’instance actuelle. S’il ne peut pas être converti en T, un ArgumentException est levée.

La comparaison null avec n’importe quel type de référence est autorisée et ne génère pas d’exception. Lors du tri, null est considéré comme inférieur à n’importe quel autre objet.

Notes pour les appelants

Compare(T, T) et Equals(T, T) se comporter différemment en termes de sensibilité de la culture et de sensibilité à la casse.

Pour les comparaisons de chaînes, la StringComparer classe est recommandée sur Comparer<String>. Les propriétés de la StringComparer classe retournent des instances prédéfinies qui effectuent des comparaisons de chaînes avec différentes combinaisons de respect de la culture et de sensibilité à la casse. La sensibilité à la casse et la sensibilité à la culture sont cohérentes entre les membres de la même StringComparer instance.

Pour plus d’informations sur les comparaisons propres à la culture, consultez l’espace de noms et la System.Globalizationglobalisation et la localisation.

S’applique à

Voir aussi