Defines a generalized comparison method that a value type or class implements to create a type-specific comparison method.
For a list of all members of this type, see IComparable Members.
[Visual Basic]
Public Interface IComparable
[C#]
public interface IComparable
[C++]
public __gc __interface IComparable
[JScript]
public interface IComparable
Classes that Implement IComparable
| Class | Description |
| Enum | Provides the base class for enumerations. |
| String | Represents text; that is, a series of Unicode characters. |
| Version | Represents the version number for a common language runtime assembly. This class cannot be inherited. |
Remarks
This interface is implemented by types whose values can be ordered; for example, the numeric and string classes.
A value type or class implements the CompareTo method to create a type-specific comparison method suitable for purposes such as sorting.
Example
[Visual Basic, C#, C++] The following code sample illustrates the implementation of IComparable and the requisite CompareTo method.
[Visual Basic]
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] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Namespace: System
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework
Assembly: Mscorlib (in Mscorlib.dll)
See Also
IComparable Members | System Namespace