次の方法で共有


IComparable.CompareTo メソッド

現在のインスタンスを同じ型の別のオブジェクトと比較します。

Function CompareTo( _
   ByVal obj As Object _) As Integer
[C#]
int CompareTo(
   objectobj);
[C++]
int CompareTo(
   Object* obj);
[JScript]
function CompareTo(
   obj : Object) : int;

パラメータ

  • obj
    このインスタンスと比較するオブジェクト。

戻り値

比較対象オブジェクトの相対順序を示す 32 ビット符号付き整数。戻り値の意味は次のとおりです。

説明
0 より小さい値 このインスタンスは obj よりも小さくなっています。
0 このインスタンスは obj と等価です。
0 より大きい値 このインスタンスは obj よりも大きくなっています。

例外

例外の種類 条件
ArgumentException obj の型がこのインスタンスの型と異なります。

解説

このメソッドは定義するだけなので、実際に使用する場合は、特定のクラスや値で実装する必要があります。比較における "より小さい"、"等価"、および "より大きい" の意味は、個別の実装によって異なります。

定義により、すべてのオブジェクトは null 参照 (Visual Basic では Nothing) よりも大きく、また 2 つの null 参照は互いに等しくなります。

obj パラメータは、このインターフェイスを実装するクラスまたは値型と同じ型である必要があります。それ以外の場合は、 ArgumentException がスローされます。

実装時の注意: 任意のオブジェクト A、B、C について、次の条件が満たされる必要があります。

A.CompareTo(A) は 0 を返す必要があります。

A.CompareTo(B) が 0 を返す場合は、 B.CompareTo(A) も 0 を返す必要があります。

A.CompareTo(B) が 0 を返し、 B.CompareTo(C) が 0 を返す場合は、 A.CompareTo(C) も 0 を返す必要があります。

A.CompareTo(B) が 0 以外の値を返す場合、 B.CompareTo(A) は反対の符号の値を返す必要があります。

A.CompareTo(B) が 0 でない値 x を返し、 B.CompareTo(C)x と同じ符号の値 y を返す場合、 A.CompareTo(C)x および y と同じ符号の値を返す必要があります。

呼び出し時の注意: CompareTo メソッドを使用して、クラスのインスタンスの順序を決定します。

使用例

[Visual Basic, C#, C++] CompareTo を使用して、 IComparable を実装している Temperature オブジェクトを別のオブジェクトと比較する方法については、次のコード例を参照してください。

 
Public Class Temperature
    Implements IComparable

    Public Overloads Function CompareTo(ByVal obj As Object) As Integer _
        Implements IComparable.CompareTo

        If TypeOf obj Is Temperature Then
            Dim temp As Temperature = CType(obj, Temperature)

            Return m_value.CompareTo(temp.m_value)
        End If

        Throw New ArgumentException("object is not a Temperature")
    End Function

    ' The value holder
    Protected m_value As Integer

    Public Property Value() As Integer
        Get
            Return m_value
        End Get
        Set(ByVal Value As Integer)
            m_value = Value
        End Set
    End Property

    Public Property Celsius() As Integer
        Get
            Return (m_value - 32) / 2
        End Get
        Set(ByVal Value As Integer)
            m_value = Value * 2 + 32
        End Set
    End Property
End Class

[C#] 
public class Temperature : IComparable {
    /// <summary>
    /// IComparable.CompareTo implementation.
    /// </summary>
    public int CompareTo(object obj) {
        if(obj is Temperature) {
            Temperature temp = (Temperature) obj;

            return m_value.CompareTo(temp.m_value);
        }
        
        throw new ArgumentException("object is not a Temperature");    
    }

    // The value holder
    protected int m_value;

    public int Value {
        get {
            return m_value;
        }
        set {
            m_value = value;
        }
    }

    public int Celsius {
        get {
            return (m_value-32)/2;
        }
        set {
            m_value = value*2+32;
        }
    }
}

[C++] 
public __gc class Temperature : public IComparable {
   /// <summary>
   /// IComparable.CompareTo implementation.
   /// </summary>
protected:
   // The value holder
   Double m_value;

public:
   Int32 CompareTo(Object* obj) {
      if(obj->GetType() == __typeof(Temperature)) {
         Temperature* temp = dynamic_cast<Temperature*>(obj);
         return m_value.CompareTo(__box(temp->m_value));
      }
      throw new ArgumentException("object is not a Temperature");    
   }

   __property Double get_Value() {
      return m_value;
   }
   __property void set_Value(Double value) {
      m_value = value;
   }

   __property Double get_Celsius() {
      return (m_value-32)/1.8;
   }

   __property void set_Celsius(Double value) {
      m_value = value*1.8 + 32;
   }
};

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

参照

IComparable インターフェイス | IComparable メンバ | System 名前空間 | Object