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.

戻り値

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.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

注釈

aIComparable実装し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.

適用対象

こちらもご覧ください