Tipps
13.10.2009, 00:00 Uhr
Eigene String-Klasse implementieren
Die Typen-Klassen im Namensraum System sind versiegelte Klassen. Das heißt, man kann Klassen wie String oder int keine Klasse ableiten. Mit einem Trick umgeht man das Hindernis.
Die neue Klasse Memo soll sich wie der Typ String von .NET verhalten. Das heißt, sie soll sich durch einen Ausdruck wie
Memo m = "Ein neues Memo";
initialisieren lassen und durch
string s = m;
einem String zuweisen lassen. Die Klasse Memo erhält ein Feld "Text", das natürlich ein String ist. Der Trick liegt nun im Überschreiben von Operatoren und von der Methode ToString().
namespace Stringy
{
class Program
{
staticvoid Main(string[] args)
{
Memo r = "Meine eigene String-Klasse.";
Console.WriteLine(r);
}
}
publicclass Memo
{
publicstring Text { get; set; }
public Memo(string s)
{
Text = s;
}
publicoverridestring ToString()
{
return Text;
}
publicstaticimplicitoperator Memo(string x)
{
Memo m = new Memo(x);
return m;
}
publicstaticexplicitoperatorstring(Memo m)
{
return m.Text;
}
}
}