Wird Object.ToString() automatisch überladen?



  • Hallo,

    ein interessantes Phänomen: Ruft man in einer eigenen Klasse die von Object geerbete Methode ToString() auf, wird der tatsächliche Name des Objekts zurückgeliefert. Das heißt, MeineProfessionelleFrickelKlasseMitSchuss.ToString() liefert nicht etwa "[...].Object", sondern tatsächlich "[...].MeineProfessionelleFrickelKlasseMitSchuss" zurück.

    Natürlich erfreulich, dass das so gut funktioniert, aber wie ergibt sich diese Funktionsweise? Steckt das schon in der Implementierung von ToString(), wird sie vom .NET-Compiler automatisch überschrieben, oder lässt sich dieser äußerst geheimnissvolle und durchweg mysteriöse Zusammenhang ganz anders begründen?

    es grüßt,
    BugProgger2k aus der Frickelzentrale ⚠



  • Aus dem Object Code:

    public virtual string ToString()
        {
            return this.GetType().FullName;
        }
    

    Wenn du ToString nicht überschreibst bekommst du also, natürlich, den korrekten Name von deinem Typ...



  • Gut, angesichts der Tatsache, dass ich ein Vollnoob bin, weiß ich jetzt genau so viel wie vorher. Das Problem bleibt ja dasselbe, GetType() ist auch eine Funktion der Klasse Object, diese liefert mir jetzt aber im Fall von meiner "MeineProfessionelleFrickelKlasseMitSchuss" eben diesen Namen. Wie findet sie den heraus?



  • BugProgger2k schrieb:

    Gut, angesichts der Tatsache, dass ich ein Vollnoob bin, weiß ich jetzt genau so viel wie vorher. Das Problem bleibt ja dasselbe, GetType() ist auch eine Funktion der Klasse Object, diese liefert mir jetzt aber im Fall von meiner "MeineProfessionelleFrickelKlasseMitSchuss" eben diesen Namen. Wie findet sie den heraus?

    Indem sie nachschaut, welchen dynamischen Typ "this" zu diesem Zeitpunkt hat. Object kann es nicht sein, da man von Object keine Instanzen erzeugen kann.



  • Object kann es nicht sein, da man von Object keine Instanzen erzeugen kann.

    Kann man, nutzt man z.B. für Monitoren.



  • 😮

    Und ich dachte Object wäre abstract, wieder was dazugelernt.


Anmelden zum Antworten