Export (0) Print
Expand All

IComparable Interface

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 Language Filter 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

Show:
© 2014 Microsoft