Ein eigener Datentyp (Teil 6)

Im letzten Teil (siehe: Ein eigener Datentyp (Teil 5)) haben wir uns um die Konvertierung aus Standard-Datentypen gekümmert. In diesem Teil soll es nun um die überschriebenen Methoden der Basisklasse – Object – gehen. Hier müssen wir die Implementierung für drei Methoden vornehmen, „Equals(object)“, „GetHashCode()“ sowie „ToString()“. Beginnen wir mit der „Equals“-Methode. Diese ist eigentlich auch schon die „komplizierteste“ der drei genannten. Hier würde ich die folgende Implementierung vorschlagen:

public override bool Equals(object obj)
{
    return ((obj is Int24) && (Value == ((Int24)obj).Value)) || ((obj is int) && (Value == (int)obj));
}

Weiter geht es nun mit der „GetHashCode“-Methode. Bei dieser können wir uns der vorhandenen Methode aus dem internen Integer-Typen zu Nutze machen. Von daher haben wir folgende total simple Implementierung:

public override int GetHashCode()
{
    return Value.GetHashCode();
}

Zu guter Letzt noch die „ToString“-Methode. Auch diese sieht nicht weiter komplex aus.

public override string ToString()
{
    return Value.ToString(CultureInfo.InvariantCulture);
}

Damit wären wir mit diesem Teil auch bereits durch. Im nächsten Teil wird es im der Interface Implementierung der „IComparable“-Schnittstelle gehen.