Comparer.Compare(Object, Object) Método
Definição
Realiza uma comparação diferenciando maiúsculas de minúsculas em dois objetos do mesmo tipo e retorna um valor que indica se um objeto é menor que, igual a ou maior que o outro.Performs a case-sensitive comparison of two objects of the same type and returns a value indicating whether one is less than, equal to, or greater than the other.
public:
virtual int Compare(System::Object ^ a, System::Object ^ b);
public int Compare (object a, object b);
public int Compare (object? a, object? b);
abstract member Compare : obj * obj -> int
override this.Compare : obj * obj -> int
Public Function Compare (a As Object, b As Object) As Integer
Parâmetros
- a
- Object
O primeiro objeto a ser comparado.The first object to compare.
- b
- Object
O segundo objeto a ser comparado.The second object to compare.
Retornos
Um inteiro assinado que indica os valores relativos de a e b, conforme mostrado na tabela a seguir.A signed integer that indicates the relative values of a and b, as shown in the following table.
| ValorValue | SignificadoMeaning |
|---|---|
| Menor que zeroLess than zero | a é menor que b.a is less than b.
|
| ZeroZero | a é igual a b.a equals b.
|
| Maior que zeroGreater than zero | a é maior que b.a is greater than b.
|
Implementações
Exceções
Nem a nem b implementam a interface IComparable.Neither a nor b implements the IComparable interface.
- ou --or-
a e b são de tipos diferentes e não podem manipular comparações com os outros.a and b are of different types and neither one can handle comparisons with the other.
Exemplos
O exemplo de código a seguir mostra como o Compare retorna valores diferentes dependendo da cultura associada ao Comparer .The following code example shows how Compare returns different values depending on the culture associated with the Comparer.
using namespace System;
using namespace System::Collections;
using namespace System::Globalization;
int main()
{
// Creates the strings to compare.
String^ str1 = "llegar";
String^ str2 = "lugar";
Console::WriteLine( "Comparing \"{0}\" and \"{1}\" ...", str1, str2 );
// Uses the DefaultInvariant Comparer.
Console::WriteLine( " Invariant Comparer: {0}", Comparer::DefaultInvariant->Compare( str1, str2 ) );
// Uses the Comparer based on the culture "es-ES" (Spanish - Spain, international sort).
Comparer^ myCompIntl = gcnew Comparer( gcnew CultureInfo( "es-ES",false ) );
Console::WriteLine( " International Sort: {0}", myCompIntl->Compare( str1, str2 ) );
// Uses the Comparer based on the culture identifier 0x040A (Spanish - Spain, traditional sort).
Comparer^ myCompTrad = gcnew Comparer( gcnew CultureInfo( 0x040A,false ) );
Console::WriteLine( " Traditional Sort : {0}", myCompTrad->Compare( str1, str2 ) );
}
/*
This code produces the following output.
Comparing "llegar" and "lugar" ...
Invariant Comparer: -1
International Sort: -1
Traditional Sort : 1
*/
using System;
using System.Collections;
using System.Globalization;
public class SamplesComparer {
public static void Main() {
// Creates the strings to compare.
String str1 = "llegar";
String str2 = "lugar";
Console.WriteLine( "Comparing \"{0}\" and \"{1}\" ...", str1, str2 );
// Uses the DefaultInvariant Comparer.
Console.WriteLine( " Invariant Comparer: {0}", Comparer.DefaultInvariant.Compare( str1, str2 ) );
// Uses the Comparer based on the culture "es-ES" (Spanish - Spain, international sort).
Comparer myCompIntl = new Comparer( new CultureInfo( "es-ES", false ) );
Console.WriteLine( " International Sort: {0}", myCompIntl.Compare( str1, str2 ) );
// Uses the Comparer based on the culture identifier 0x040A (Spanish - Spain, traditional sort).
Comparer myCompTrad = new Comparer( new CultureInfo( 0x040A, false ) );
Console.WriteLine( " Traditional Sort : {0}", myCompTrad.Compare( str1, str2 ) );
}
}
/*
This code produces the following output.
Comparing "llegar" and "lugar" ...
Invariant Comparer: -1
International Sort: -1
Traditional Sort : 1
*/
Imports System.Collections
Imports System.Globalization
Public Class SamplesComparer
Public Shared Sub Main()
' Creates the strings to compare.
Dim str1 As [String] = "llegar"
Dim str2 As [String] = "lugar"
Console.WriteLine("Comparing ""{0}"" and ""{1}"" ...", str1, str2)
' Uses the DefaultInvariant Comparer.
Console.WriteLine(" Invariant Comparer: {0}", Comparer.DefaultInvariant.Compare(str1, str2))
' Uses the Comparer based on the culture "es-ES" (Spanish - Spain, international sort).
Dim myCompIntl As New Comparer(New CultureInfo("es-ES", False))
Console.WriteLine(" International Sort: {0}", myCompIntl.Compare(str1, str2))
' Uses the Comparer based on the culture identifier 0x040A (Spanish - Spain, traditional sort).
Dim myCompTrad As New Comparer(New CultureInfo(&H40A, False))
Console.WriteLine(" Traditional Sort : {0}", myCompTrad.Compare(str1, str2))
End Sub
End Class
'This code produces the following output.
'
'Comparing "llegar" and "lugar" ...
' Invariant Comparer: -1
' International Sort: -1
' Traditional Sort : 1
Comentários
Se a implementa IComparable , então a .If a implements IComparable, then a. CompareTo ( b ) é retornado; caso contrário, se b implementa IComparable , o resultado negado de b .CompareTo (b) is returned; otherwise, if b implements IComparable, then the negated result of b. CompareTo ( a ) é retornado.CompareTo (a) is returned.
nullA comparação com qualquer tipo é permitida e não gera uma exceção ao usar IComparable .Comparing null with any type is allowed and does not generate an exception when using IComparable. Durante a classificação, null é considerado menor que qualquer outro objeto.When sorting, null is considered to be less than any other object.
As comparações de cadeia de caracteres podem ter resultados diferentes dependendo da cultura.String comparisons might have different results depending on the culture. Para obter mais informações sobre comparações específicas de cultura, consulte o System.Globalization namespace e a globalização e a localização.For more information on culture-specific comparisons, see the System.Globalization namespace and Globalization and Localization.