IComparable インターフェイス

型固有の比較メソッドを作成するために値型またはクラスで実装する、汎用の比較メソッドを定義します。

この型のすべてのメンバの一覧については、IComparable メンバ を参照してください。

Public Interface IComparable
[C#]
public interface IComparable
[C++]
public __gc __interface IComparable
[JScript]
public interface IComparable

IComparable を実装するクラス

クラス 説明
Enum 列挙体の基本クラスを提供します。
String テキスト、つまり一連の Unicode 文字を表します。
Version 共通言語ランタイム アセンブリのバージョン番号を表します。このクラスは継承できません。

解説

このインターフェイスは、数値クラスや文字列クラスのように、値の順序を指定できる型によって実装されます。

値型やクラスは、 CompareTo メソッドを実装し、並べ替えなどの目的に適した型固有の比較メソッドを作成します。

使用例

[Visual Basic, C#, C++] IComparable の実装とその必要条件である CompareTo メソッドについては、次のコード例を参照してください。

 
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++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System

プラットフォーム: 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

アセンブリ: Mscorlib (Mscorlib.dll 内)

参照

IComparable メンバ | System 名前空間