Comparer.Compare(Object, Object) メソッド

定義

同じ型の 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

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

b
Object

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

戻り値

Int32

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.
ゼロZero 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.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

注釈

がを実装している場合は a IComparableaIf 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任意の型との比較が可能であり、を使用する場合は例外が生成されません IComparableComparing 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.

適用対象

こちらもご覧ください