Comparer.Compare(Object, Object) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Wykonuje porównanie wielkości liter dwóch obiektów tego samego typu i zwraca wartość wskazującą, czy jedna jest mniejsza niż, równa, czy większa niż druga.
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
Parametry
- a
- Object
Pierwszy obiekt do porównania.
- b
- Object
Drugi obiekt do porównania.
Zwraca
Podpisana liczba całkowita wskazująca względne wartości a
i b
, jak pokazano w poniższej tabeli.
Wartość | Znaczenie |
---|---|
Mniej niż zero | a wartość jest mniejsza niż b .
|
Zero | a b równa się .
|
Większe od zera | a wartość jest większa niż b .
|
Implementuje
Wyjątki
Ani a
b
nie implementuje interfejsu IComparable .
-lub-
a
i są różne typy, b
a żadna z nich nie może obsługiwać porównań z innymi.
Przykłady
Poniższy przykład kodu pokazuje, jak Compare zwraca różne wartości w zależności od kultury skojarzonej z elementem 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
Uwagi
Jeśli a
implementuje metodę IComparable, to a
. CompareTo
(b
) jest zwracany; w przeciwnym razie, jeśli b
implementuje IComparableelement , wynik negowany .b
CompareTo
(a
) jest zwracany.
Porównanie null
z dowolnym typem jest dozwolone i nie generuje wyjątku w przypadku korzystania z polecenia IComparable. Podczas sortowania uważa się, null
że jest mniej niż jakikolwiek inny obiekt.
Porównania ciągów mogą mieć różne wyniki w zależności od kultury. Aby uzyskać więcej informacji na temat porównań specyficznych dla kultury, zobacz System.Globalization przestrzeń nazw i globalizację i lokalizację.