Zusammenfassung - Benutzerdefinierte Liste
Teil des Abschnitts Objektorientierte Programmierung der C#-Journey von Coddy — Lektion 40 von 70.
Aufgabe
EinfachLassen 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 eineCustomList-Klasse im NamespaceCollections, 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 bisCount, keine leeren Plätze
- Ein privates Integer-Array zum Speichern von Elementen und eine
ListExtensions.cs: Erstellen Sie eine statische KlasseListExtensionsim NamespaceCollectionsmit einer Erweiterungsmethode für Ihre CustomList:Sum()– gibt die Summe aller Elemente in der Liste zurück (bis zuCount)
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 mitToString()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: 105Beachten 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
1Grundlagen der OOP
Externe DateienNamespaces & DirektivenEinführung in Klassen & ObjekteDas 'this'-SchlüsselwortMethoden und ParameterFelder vs. EigenschaftenKonstruktorenObjekt-InitialisiererZusammenfassung - Einfacher Taschenrechner4Vererbung
Grundlagen der Vererbung (:) SyntaxDas 'base'-SchlüsselwortVirtual & Override SchlüsselwörterVersiegelte KlassenDie 'object'-BasisklasseZusammenfassung – Mitarbeiter-Hierarchie7Fortgeschrittene Funktionen
OperatorüberladungIndexer (this[])ToString() überschreibenErweiterungsmethodenZusammenfassung - Benutzerdefinierte Liste2Eigenschaften & Statische Member
Automatisch implementierte EigenschaftenRead-Only- & Write-Only-EigenschaftenStatische Felder & MethodenStatische KlassenExpression-Bodied Member5Polymorphismus & Interfaces
Compile- vs. Runtime-PolymorphismusInterface vs. abstrakte KlasseMehrfache InterfacesExplizite InterfacesUpcasting & DowncastingRecap – Shape Calculator3Klassenarchitektur
Instanz- vs. statische Daten'readonly' & 'const' SchlüsselwörterBacking FieldsZusammenfassung - Bankkonto-Manager6Kapselung
ZugriffsmodifikatorenProperties zur KapselungImplementierung von Data HidingImmutability-MusterRückblick – Studierendendaten