Comparer.Compare(Object, Object) Comparer.Compare(Object, Object) Comparer.Compare(Object, Object) Comparer.Compare(Object, Object) Method

定義

同じ型の 2 つのオブジェクトに対して大文字と小文字を区別する比較を実行し、一方が他方よりも小さいか、等しいか、大きいかを示す値を返します。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);
abstract member Compare : obj * obj -> int
override this.Compare : obj * obj -> int
Public Function Compare (a As Object, b As Object) As Integer

パラメーター

a
Object Object Object Object

比較する最初のオブジェクト。The first object to compare.

b
Object Object Object Object

比較する 2 番目のオブジェクト。The second object to compare.

戻り値

ab の相対値を示す符号付き整数。次の表を参照してください。A signed integer that indicates the relative values of a and b, as shown in the following table.

[値]Value 説明Meaning
0 より小さい値Less than zero ab より小さい値です。a is less than b.
0Zero ab は等しい。a equals b.
0 より大きい値Greater than zero ab より大きくなっています。a is greater than b.

実装

例外

ab が、いずれも IComparable インターフェイスを実装していません。Neither a nor b implements the IComparable interface.

または-or- ab の型が異なっていて、両者を比較できません。a and b are of different types and neither one can handle comparisons with the other.

次のコード例に示す方法Compareに関連付けられているカルチャによって異なる値を返します、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
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 'Main 

End Class 'SamplesComparer


'This code produces the following output.
'
'Comparing "llegar" and "lugar" ...
'   Invariant Comparer: -1
'   International Sort: -1
'   Traditional Sort  : 1

注釈

場合a実装IComparable、しaします。If a implements IComparable, then a. CompareTo (b) が返されます。 場合b実装IComparable、否定の結果、bします。CompareTo (b) is returned; otherwise, if b implements IComparable, then the negated result of b. CompareTo (a) が返されます。CompareTo (a) is returned.

比較するnull任意の型では許可され、使用する場合は、例外を生成しませんIComparableします。Comparing null with any type is allowed and does not generate an exception when using IComparable. ときに、並べ替え、null未満、他のオブジェクトと見なされます。When sorting, null is considered to be less than any other object.

文字列比較では、カルチャによって異なる結果があります。String comparisons might have different results depending on the culture. カルチャ固有の比較の詳細については、次を参照してください。、System.Globalization名前空間とグローバリゼーションとローカリゼーションします。For more information on culture-specific comparisons, see the System.Globalization namespace and Globalization and Localization.

適用対象

こちらもご覧ください