Lenguaje

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

Definición

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.

Se aplica a

Consulte también