Comparer<T>.IComparer.Compare(Object, Object) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Compara dois objetos e retorna um valor que indica se um é menor, igual ou maior do 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 ser comparado.
- y
- Object
O segundo objeto a ser comparado.
Retornos
Um inteiro assinado que indica os valores relativos de x
e y
, conforme mostrado na tabela a seguir.
Valor | Significado |
---|---|
Menor que zero | x é menor que 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 convertido para o tipo T
.
- ou -
x
e y
não implementam a interface genérica do IComparable<T> nem a interface do IComparable.
Exemplos
O exemplo a seguir mostra como usar o IComparer.Compare método para comparar dois objetos. Este exemplo faz parte de um exemplo maior fornecido para a Comparer<T> classe .
// 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())
Comentários
Esse método é um wrapper para o Compare(T, T) método , portanto obj
, deve ser convertido no tipo especificado pelo argumento T
genérico da instância atual. Se não puder ser convertido em T
, um ArgumentException será lançado.
A comparação null
com qualquer tipo de referência é permitida e não gera uma exceção. Durante a classificação, null
é considerado menor que qualquer outro objeto.
Notas aos Chamadores
Compare(T, T) e Equals(T, T) se comportam de forma diferente em termos de sensibilidade à cultura e diferenciação de maiúsculas e minúsculas.
Para comparações de cadeia de caracteres, a StringComparer classe é recomendada sobre Comparer<String>
. As propriedades da StringComparer classe retornam instâncias predefinidas que executam comparações de cadeia de caracteres com diferentes combinações de sensibilidade à cultura e diferenciação de maiúsculas e minúsculas. A diferenciação de maiúsculas e minúsculas e a cultura-sensibilidade são consistentes entre os membros da mesma StringComparer instância.
Para obter mais informações sobre comparações específicas da cultura, consulte o System.Globalization namespace e Globalização e Localização.