Menu
Coddy logo textTech

ToString()-Überschreibung

Teil des Abschnitts Objektorientierte Programmierung der C#-Journey von Coddy. Lektion 38 von 70.

Jede Klasse in C# erbt von object, welche eine ToString()-Methode bereitstellt. Standardmäßig gibt sie den vollqualifizierten Typnamen zurück – nicht besonders nützlich, wenn man die tatsächlichen Daten eines Objekts sehen möchte.

Sie können ToString() überschreiben, um eine aussagekräftige String-Repräsentation Ihres Objekts zurückzugeben:

public class Person
{
    public string Name { get; }
    public int Age { get; }
    
    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }
    
    public override string ToString()
    {
        return $"{Name} ({Age} years old)";
    }
}

Wenn Sie nun ein Person-Objekt ausgeben oder verketten, erhalten Sie eine lesbare Ausgabe:

Person p = new Person("Alice", 30);
Console.WriteLine(p);  // Alice (30 Jahre alt)

Ohne das Überschreiben würde dies etwas wie MyNamespace.Person ausgeben. Das Schlüsselwort override ist erforderlich, da Sie die geerbte Methode von object ersetzen. Dies ist besonders wertvoll für das Debugging und Logging, wenn Sie einen schnellen Einblick in den Zustand eines Objekts benötigen.

challenge icon

Aufgabe

Einfach

Erstellen wir eine Book-Klasse, die beim Ausgeben aussagekräftige Zeichenfolgendarstellungen liefert und dadurch das Debuggen sowie die Anzeige von Buchinformationen viel intuitiver macht.

Du organisierst deinen Code auf zwei Dateien:

  • Book.cs: Erstelle eine Book-Klasse im Library-Namespace, die ein Buch mit seinen wesentlichen Details darstellt. Dein Buch sollte Folgendes haben:
    • Drei schreibgeschützte Eigenschaften: Title (string), Author (string) und Year (int)
    • Einen Konstruktor, der Titel, Autor und Jahr in dieser Reihenfolge entgegennimmt
    • Eine überschriebene ToString()-Methode, die einen formatierten String zurückgibt: "{Title}" by {Author} ({Year})
    Beachte, dass der Titel in der Ausgabe in doppelte Anführungszeichen eingeschlossen sein soll!
  • Program.cs: Erstelle in deiner Hauptdatei ein Book-Objekt anhand der Eingabewerte und gib es direkt aus. Dank deiner ToString()-Überschreibung wird durch die Übergabe des Buchobjekts an Console.WriteLine() automatisch die formatierte Information anstelle des Typnamens angezeigt.

Du erhältst drei Eingaben:

  • Buchtitel (string)
  • Name des Autors (string)
  • Veröffentlichungsjahr (integer)

Gib das Buchobjekt direkt mit Console.WriteLine() aus.

Wenn die Eingaben beispielsweise The Great Gatsby, F. Scott Fitzgerald und 1925 lauten, sollte die Ausgabe folgendermaßen aussehen:

"The Great Gatsby" by F. Scott Fitzgerald (1925)

Das Magische daran ist, dass du ToString() nicht explizit aufrufst – wenn du ein Objekt an Console.WriteLine() übergibst, ruft es automatisch die ToString()-Methode des Objekts auf. Deine Überschreibung macht diese Ausgabe nützlich, anstatt einfach nur Library.Book anzuzeigen!

Probier es selbst

using System;
using Library;

class Program
{
    public static void Main(string[] args)
    {
        // Eingabe lesen
        string title = Console.ReadLine();
        string author = Console.ReadLine();
        int year = Convert.ToInt32(Console.ReadLine());

        // TODO: Erstelle ein Book-Objekt unter Verwendung der Eingabewerte

        // TODO: Gib das Book-Objekt direkt mit Console.WriteLine() aus
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-C#-Compiler