IComparer.Compare(Object, Object) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Compare deux objets et retourne une valeur indiquant si le premier est inférieur, égal ou supérieur au second.
public:
int Compare(System::Object ^ x, System::Object ^ y);
public int Compare (object x, object y);
public int Compare (object? x, object? y);
abstract member Compare : obj * obj -> int
Public Function Compare (x As Object, y As Object) As Integer
Paramètres
- x
- Object
Premier objet à comparer.
- y
- Object
Deuxième objet à comparer.
Retours
Entier signé indiquant les valeurs relatives de x
et y
:
- S’il est inférieur à 0, x
est inférieur à y
.
- S’il est égal à 0, x
est égal à y
.
- S’il est supérieur à 0, x
est supérieur à y
.
Exceptions
Ni x
ni y
n'implémente l'interface IComparable.
- ou -
x
et y
sont de types différents et aucun d'entre eux ne peut effectuer de comparaisons avec l'autre.
Exemples
L’exemple suivant utilise l’interface IComparer pour trier un tableau de chaînes. Dans cet exemple, la Compare méthode est implémentée à l’aide de la CaseInsensitiveComparer classe pour inverser l’ordre du contenu du tableau.
using System;
using System.Collections;
public class Example
{
public class ReverserClass : IComparer
{
// Call CaseInsensitiveComparer.Compare with the parameters reversed.
int IComparer.Compare(Object x, Object y)
{
return ((new CaseInsensitiveComparer()).Compare(y, x));
}
}
public static void Main()
{
// Initialize a string array.
string[] words = { "The", "quick", "brown", "fox", "jumps", "over",
"the", "lazy", "dog" };
// Display the array values.
Console.WriteLine("The array initially contains the following values:" );
PrintIndexAndValues(words);
// Sort the array values using the default comparer.
Array.Sort(words);
Console.WriteLine("After sorting with the default comparer:" );
PrintIndexAndValues(words);
// Sort the array values using the reverse case-insensitive comparer.
Array.Sort(words, new ReverserClass());
Console.WriteLine("After sorting with the reverse case-insensitive comparer:");
PrintIndexAndValues(words);
}
public static void PrintIndexAndValues(IEnumerable list)
{
int i = 0;
foreach (var item in list )
Console.WriteLine($" [{i++}]: {item}");
Console.WriteLine();
}
}
// The example displays the following output:
// The array initially contains the following values:
// [0]: The
// [1]: quick
// [2]: brown
// [3]: fox
// [4]: jumps
// [5]: over
// [6]: the
// [7]: lazy
// [8]: dog
//
// After sorting with the default comparer:
// [0]: brown
// [1]: dog
// [2]: fox
// [3]: jumps
// [4]: lazy
// [5]: over
// [6]: quick
// [7]: the
// [8]: The
//
// After sorting with the reverse case-insensitive comparer:
// [0]: the
// [1]: The
// [2]: quick
// [3]: over
// [4]: lazy
// [5]: jumps
// [6]: fox
// [7]: dog
// [8]: brown
Imports System.Collections
Public Class Example
Public Class ReverserClass : Implements IComparer
' Call CaseInsensitiveComparer.Compare with the parameters reversed.
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer _
Implements IComparer.Compare
Return New CaseInsensitiveComparer().Compare(y, x)
End Function
End Class
Public Shared Sub Main()
' Initialize a string array.
Dim words() As String = { "The", "quick", "brown", "fox", "jumps", "over",
"the", "lazy", "dog" }
' Display the array values.
Console.WriteLine("The array initially contains the following values:")
PrintIndexAndValues(words)
' Sort the array values of the ArrayList using the default comparer.
Array.Sort(words)
Console.WriteLine("After sorting with the default comparer:")
PrintIndexAndValues(words)
' Sort the array values using the reverse case-insensitive comparer.
Array.Sort(words, new ReverserClass())
Console.WriteLine("After sorting with the reverse case-insensitive comparer:")
PrintIndexAndValues(words)
End Sub
Public Shared Sub PrintIndexAndValues(list As IEnumerable)
Dim i As Integer = 0
For Each item In list
Console.WriteLine($" [{i}]: {item}")
i += 1
Next
Console.WriteLine()
End Sub
End Class
' The example displays the following output:
' The array initially contains the following values:
' [0]: The
' [1]: quick
' [2]: brown
' [3]: fox
' [4]: jumps
' [5]: over
' [6]: the
' [7]: lazy
' [8]: dog
'
' After sorting with the default comparer:
' [0]: brown
' [1]: dog
' [2]: fox
' [3]: jumps
' [4]: lazy
' [5]: over
' [6]: quick
' [7]: the
' [8]: The
'
' After sorting with the reverse case-insensitive comparer:
' [0]: the
' [1]: The
' [2]: quick
' [3]: over
' [4]: lazy
' [5]: jumps
' [6]: fox
' [7]: dog
' [8]: brown
Remarques
L’implémentation préférée consiste à utiliser la CompareTo méthode de l’un des paramètres.
La comparaison null
avec n’importe quel type est autorisée et ne génère pas d’exception lors de l’utilisation de IComparable. Lors du tri, null
est considéré comme inférieur à tout autre objet.