C# 2D Array mit eingabe des Benutzer erweitern?

3 Antworten

Du musst deine Daten auf der Festplatte speichern, wie? Das ist dir überlassen.

Es gibt dafür zahlreiche Methoden, die einfachste wäre wahrscheinlich eine JSON oder XML Datei in der du dein Mehrdimensionales Array speicherst und ein entsprechender parser für C#.

https://docs.microsoft.com/de-de/dotnet/standard/serialization/system-text-json-how-to

https://stackoverflow.com/questions/16921652/how-to-write-a-json-file-in-c

Wenn es ein bisschen komplizierter sein darf geht natürlich auch eine beliebige Datenbank mit C# Schnittstelle.

LG

Woher ich das weiß:Studium / Ausbildung – Gelernter Fachinformatiker, Freiberufl. Softwareentwickler

Da die Daten mit Beendigung des Programms aus dem Speicher gelöscht werden, musst du sie zuvor in einer externen Darstellung ablegen. Das kann ganz einfach eine Datei sein.

Sobald dein Programm wiederum geöffnet wird, sollte es schauen, ob es eine entsprechende Datei gibt, aus der es Daten lesen und das Array entsprechend vorbelegen kann.

Für das Schreiben und Lesen von Textdateien bietet die Microsoft Dokumentation bereits erklärende Artikel.

Zum Einen ist ein Array keine gute Lösung zum Erweitern, denn es hat eine feste und unveränderliche Größe.
Besser wäre eine generische Liste (List<T>), die nutzt intern auch ein Array, kümmert sich aber um eine effiziennte und kluge Neuerstellung des Arrays, sollte es nötig sein.

Und wie Du speicherst, bleibt dir überlassen, in jedem Fall brauchst Du aber eine Datei. Die erstellst Du beim Beenden des Programms und beim Starten guckst Du nach, ob es da eine Datei gibst und liest ggf. daraus.

Was für eine Datei, da gibt's zahllose Möglichkeiten:

  • Das einfachste dürfte XML sein, da hilft der "XmlSerializer" (ist eine Klasse im .NET-Framework), der kann das automatisch.
  • Ansonsten gibt's noch JSON, da hilft das Framework "Newtonsoft.JSON" (hat ein Entwickler von Microsoft privat entwickelt), das kann das auch automatisch.
  • Oder Du nutzt CSV, da gibt's massig Frameworks, aber ich mag den "CSV Helper" am liebsten, doch hier könnte ich mir vorstellen, dass Du Klassen brauchst.
  • Oder Du nutzt eine Datenbank, das fordert aber weit mehr Einarbeitung, ist aber gerade für viele oder komplexe Daten fast immer die optimale Lösung. In dem Fall hast Du nicht immer eine Datei (zumindest siehst Du sie nicht immer sofort), das hängt vom Datenbank-System ab, die speichern das dann auf eigene Weise.
  • Oder Du denkst dir ein eigenes Datei-Format aus, doch das ist langfristig nie eine gute Idee. Hier helfen die Klassen im "System.IO"-Namespace.
  • Oder Du nutzt binäre Serialisierung, der "BinaryFormatter" kann das. Allerdings hast Du dann ein Datei-Format, das man nur mit viel Aufwand direkt lesen kann. Es geht, aber es ist umständlich, daher würde ich immer zu Text-basierten Formaten (XML, JSON, CSV, etc.) oder einer Datenbank raten.

In jedem Fall solltest Du dich aber mit den Grundlagen auseinander setzen, insbesondere der objektorientierten Programmierung, da lernst Du dann auch, wie man den Vorhaben mit einer eindimensionalen Liste in einer Kunden-Klasse lösen kann.
Dieses Buch ist ganz gut, trotz des Alters. Es bietet auch viele Übungs-Beispiele.

Wenn Du dich da belesen hast, solltest Du die Liste nutzen und dazu dann die Daten in einer Klasse zusammen fassen. Dann werden auch die Datei-Formate gleich viel übersichtlicher.

Woher ich das weiß:Berufserfahrung – C#.NET Senior Softwareentwickler