Menu
Coddy logo textTech

Zusammenfassung - Benutzerdefinierte Liste

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

challenge icon

Aufgabe

Einfach

Lassen Sie uns eine CustomList-Klasse erstellen, die alle fortgeschrittenen Funktionen aus diesem Kapitel vereint – Operatorüberladung, Indexer, ToString()-Überschreibung und Erweiterungsmethoden –, um eine Sammlung zu schaffen, die sich natürlich und intuitiv anfühlt.

Sie werden Ihren Code über drei Dateien organisieren:

  • CustomList.cs: Erstellen Sie eine CustomList-Klasse im Namespace Collections, die ein internes Integer-Array kapselt und intuitive Zugriffsmuster bietet. Ihre Liste sollte Folgendes haben:
    • Ein privates Integer-Array zum Speichern von Elementen und eine Count-Eigenschaft (mit einem privaten Setter), die verfolgt, wie viele Elemente gespeichert sind
    • Einen Konstruktor, der eine Kapazität (Integer) akzeptiert und das interne Array mit dieser Größe initialisiert
    • Eine Methode Add(int item), die ein Element an der nächsten verfügbaren Position hinzufügt (sofern Platz vorhanden ist)
    • Einen Indexer this[int index], der das Abrufen und Setzen von Elementen nach Position ermöglicht
    • Einen überladenen +-Operator, der zwei CustomLists zu einer neuen kombiniert, die alle Elemente von beiden enthält (die Kapazität der neuen Liste sollte die Summe beider Zählwerte sein)
    • Eine überschriebene ToString()-Methode, die Elemente im Format [item1, item2, item3] zurückgibt – berücksichtigen Sie nur Elemente bis Count, keine leeren Plätze
  • ListExtensions.cs: Erstellen Sie eine statische Klasse ListExtensions im Namespace Collections mit einer Erweiterungsmethode für Ihre CustomList:
    • Sum() – gibt die Summe aller Elemente in der Liste zurück (bis zu Count)
  • Program.cs: Erstellen Sie in Ihrer Hauptdatei zwei CustomLists, fügen Sie jedem Elemente hinzu und demonstrieren Sie dann das Zusammenspiel aller Funktionen – verwenden Sie den Indexer für den Zugriff auf Elemente, kombinieren Sie Listen mit dem +-Operator, geben Sie sie mit ToString() aus und berechnen Sie die Summe mit Ihrer Erweiterungsmethode.

Sie erhalten sechs Eingaben:

  • Drei Ganzzahlen, die der ersten Liste hinzugefügt werden sollen
  • Drei Ganzzahlen, die der zweiten Liste hinzugefügt werden sollen

Erstellen Sie die erste Liste mit einer Kapazität von 5 und die zweite mit einer Kapazität von 3. Fügen Sie die drei Eingabewerte der jeweiligen Liste hinzu.

Geben Sie die Ausgabe in diesem Format aus:

List 1: {ToString()}
List 2: {ToString()}
List 1[0]: {first item}
Combined: {ToString() of combined list}
Combined sum: {Sum()}

Wenn die Eingaben beispielsweise 10, 20, 30, 5, 15 und 25 sind, sollte die Ausgabe wie folgt aussehen:

List 1: [10, 20, 30]
List 2: [5, 15, 25]
List 1[0]: 10
Combined: [10, 20, 30, 5, 15, 25]
Combined sum: 105

Beachten Sie, wie alle Teile zusammenarbeiten – der Indexer ermöglicht Ihnen einen Array-ähnlichen Zugriff, der +-Operator lässt Sie Listen auf natürliche Weise kombinieren, ToString() liefert eine lesbare Ausgabe und die Erweiterungsmethode fügt nützliche Funktionalität hinzu. So fühlen sich gut gestaltete Klassen an!

Probier es selbst

using System;
using Collections;

class Program
{
    public static void Main(string[] args)
    {
        // Lies sechs Ganzzahlen ein
        int a1 = Convert.ToInt32(Console.ReadLine());
        int a2 = Convert.ToInt32(Console.ReadLine());
        int a3 = Convert.ToInt32(Console.ReadLine());
        int b1 = Convert.ToInt32(Console.ReadLine());
        int b2 = Convert.ToInt32(Console.ReadLine());
        int b3 = Convert.ToInt32(Console.ReadLine());

        // TODO: Erstelle die erste CustomList mit einer Kapazität von 5
        // TODO: Füge a1, a2, a3 zur ersten Liste hinzu

        // TODO: Erstelle die zweite CustomList mit einer Kapazität von 3
        // TODO: Füge b1, b2, b3 zur zweiten Liste hinzu

        // TODO: Gib Liste 1 mit ToString() aus
        // TODO: Gib Liste 2 mit ToString() aus
        // TODO: Gib Liste 1[0] über den Indexer aus
        // TODO: Kombiniere die Listen mit dem + Operator und gib das Ergebnis aus
        // TODO: Gib die Summe der kombinierten Liste mit der Sum() Erweiterungsmethode aus
    }
}

Alle Lektionen in Objektorientierte Programmierung