Comparer<T>.IComparer.Compare(Object, Object) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Compara dois objetos e devolve um valor que indica se um é menor, igual ou maior que o outro.
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
O primeiro objeto a comparar.
- y
- Object
O segundo objeto para comparar.
Devoluções
Um inteiro com sinal que indica os valores relativos de x e y, conforme mostrado na tabela seguinte.
| Valor | Significado |
|---|---|
| Menos que zero |
x é inferior a y.
|
| Zero |
x igual a y.
|
| Maior que zero |
x é maior que y.
|
Implementações
Exceções
x ou y é de um tipo que não pode ser fundido para o tipo T.
-ou-
x e y não implementam nem a IComparable<T> interface genérica nem a IComparable interface.
Exemplos
O exemplo seguinte mostra como usar o IComparer.Compare método para comparar dois objetos. Este exemplo faz parte de um exemplo mais amplo fornecido à Comparer<T> turma.
// 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())
Observações
Este método é um wrapper para o Compare(T, T) método, pelo que obj deve ser lançado para o tipo especificado pelo argumento T genérico da instância atual. Se não puder ser lançado para T, e ArgumentException é lançado.
Comparar null com qualquer tipo de referência é permitido e não gera exceção. Ao ordenar, null considera-se menos do que qualquer outro objeto.
Notas para Chamadores
Compare(T, T) e Equals(T, T) comportam-se de forma diferente em termos de sensibilidade cultural e de sensibilidade a maiúsculas minúsculas.
Para comparações de cordas, recomenda-se a StringComparer classe em vez de Comparer<String>. As propriedades da StringComparer classe retornam instâncias pré-definidas que realizam comparações de cadeias com diferentes combinações de sensibilidade à cultura e sensibilidade a maiúsculas minúsculas. A sensibilidade ao caso e à cultura são consistentes entre os membros da mesma StringComparer instância.
Para mais informações sobre comparações específicas de culturas, consulte o System.Globalization namespace e Globalização e Localização.