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 内)