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 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 a y.
|
| Mayor que cero |
x es mayor que y.
|
Implementaciones
Excepciones
x o y es de un tipo que no se puede convertir al tipo T.
O bien
x y y no implementan la IComparable<T> interfaz genérica ni la IComparable interfaz .
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.
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())
Comentarios
Este método es un contenedor para el Compare(T, T) método , por lo que obj debe convertirse al tipo especificado por el argumento T genérico de la instancia actual. Si no se puede convertir a T, se produce una ArgumentException excepción .
null Se 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 Equals(T, T) se comportan de forma diferente en términos de distinción cultural y distinción entre mayúsculas y 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 de referencia 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 System.Globalization localización.