Comparer<T>.IComparer.Compare(Object, Object) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Compara dos objetos y devuelve un valor que indica si uno de ellos es menor, igual o mayor que el otro.
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
Parámetros
- x
- Object
Primer objeto que se va a comparar.
- y
- Object
Segundo objeto que se va a comparar.
Devoluciones
Entero con signo que indica los valores relativos de x
y y
, como se muestra en la tabla siguiente.
Valor | Significado |
---|---|
Menor que cero | x es menor que y .
|
Cero | x es igual que y .
|
Mayor que cero | x es mayor que y .
|
Implementaciones
Excepciones
El tipo de x
o y
no se puede convertir al tipo T
.
o bien
x
e y
no implementan la interfaz genérica IComparable<T>, ni la interfaz IComparable.
Ejemplos
En el ejemplo siguiente se muestra cómo usar el IComparer.Compare método para comparar dos objetos. Este ejemplo forma parte de un ejemplo más grande proporcionado para la Comparer<T> clase .
// 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())
Comentarios
Este método es un contenedor para el Compare(T, T) método , por lo que obj
se debe convertir al tipo especificado por el argumento T
genérico de la instancia actual. Si no se puede convertir en T
, se produce una ArgumentException excepción .
Se null
permite comparar con cualquier tipo de referencia y no genera una excepción. Al ordenar, null
se considera menor que cualquier otro objeto.
Notas a los autores de las llamadas
Compare(T, T) y se comportan de forma diferente en términos de distinción cultural y distinción entre mayúsculas y Equals(T, T) minúsculas.
Para las comparaciones de cadenas, se recomienda la StringComparer clase en Comparer<String>
. Las propiedades de la StringComparer clase devuelven instancias predefinidas que realizan comparaciones de cadenas con diferentes combinaciones de distinción cultural y distinción entre mayúsculas y minúsculas. La distinción entre mayúsculas y minúsculas y la distinción cultural son coherentes entre los miembros de la misma StringComparer instancia.
Para obtener más información sobre las comparaciones específicas de la referencia cultural, consulte el espacio de nombres y globalización System.Globalizationy la localización.