IComparable-Schnittstelle
Definiert eine allgemeine Vergleichsmethode, die von einem Werttyp oder einer Klasse für die Erstellung einer typspezifischen Vergleichsmethode implementiert wird.
Namespace: System
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
<ComVisibleAttribute(True)> _
Public Interface IComparable
'Usage
Dim instance As IComparable
[ComVisibleAttribute(true)]
public interface IComparable
[ComVisibleAttribute(true)]
public interface class IComparable
/** @attribute ComVisibleAttribute(true) */
public interface IComparable
ComVisibleAttribute(true)
public interface IComparable
Hinweise
Diese Schnittstelle wird von Typen implementiert, deren Werte geordnet werden können, beispielsweise numerische Typen und Zeichenfolgenklassen.
Eine Werttyp oder eine Klasse implementiert die CompareTo-Methode zur Erstellung einer typspezifischen Vergleichsmethode, die sich beispielsweise zum Sortieren o. ä. eignet.
Beispiel
Da folgende Codebeispiel veranschaulicht das Implementieren von IComparable und der erforderlichen CompareTo-Methode.
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
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;
}
}
}
public ref class Temperature: public IComparable {
/// <summary>
/// IComparable.CompareTo implementation.
/// </summary>
protected:
// The value holder
Double m_value;
public:
virtual Int32 CompareTo( Object^ obj ) {
if ( obj->GetType() == Temperature::typeid ) {
Temperature^ temp = dynamic_cast<Temperature^>(obj);
return m_value.CompareTo( temp->m_value );
}
throw gcnew ArgumentException( "object is not a Temperature" );
}
property Double Value {
Double get() {
return m_value;
}
void set( Double value ) {
m_value = value;
}
}
property Double Celsius {
Double get() {
return (m_value - 32) / 1.8;
}
void set( Double value ) {
m_value = value * 1.8 + 32;
}
}
};
public class Temperature implements IComparable
{
/// <summary>
/// IComparable.CompareTo implementation.
/// </summary>
public int CompareTo(Object obj)
{
if (obj instanceof Temperature) {
Temperature temp = (Temperature)obj;
return ((Int32)mValue).CompareTo(temp.mValue);
}
throw new ArgumentException("object is not a Temperature");
} //CompareTo
// The value holder
protected int mValue;
/** @property
*/
public int get_Value()
{
return mValue;
}//get_Value
/** @property
*/
public void set_Value(int value)
{
mValue = value;
}//set_Value
/** @property
*/
public int get_Celsius()
{
return (mValue - 32) / 2;
}//get_Celsius
/** @property
*/
public void set_Celsius(int value)
{
mValue = value * 2 + 32;
}//set_Celsius
} //Temperature
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0, 1.0