C# Welcher Datentyp (statt Array) wächst dynamisch mit?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Arrays sind keine Datentypen, sondern eine Form der Auflistung. Auch in anderen Programmiersprachen, wie z. B. C, Delphi oder Java muss die Größe vorher festgelegt werden.

Eine andere Art der Auflistung, sind generische Listen. Bei generischen Listen ist die Größe dynamisch und muss nicht fix angegeben werden. In .Net Sprachen wie C#, können einzelne Elemente einer Liste über den Index angesprochen werden, so, wie bei einem Array mit den eckigen Klammern.

Hier ein Beispiel für eine List vom Typ String:

// hier befindet sich die Klasse List<T>
using System.Collections.Generics;

// gekürzt
List<string> lines = new List<string>();

// gekürzt
lines.Add("Hello World!");
Console.WriteLine(lines[0]);  // gibt "Hello World!" aus

Zudem können auch Listen von selbst definierten Typen verwendet werden, genau, wie bei Arrays:

// eigener Typ
public class Dinosaur
{
   public string Name { get; set; }
   public string Period { get; set; }
}

// andere Klasse
// gekürzt
List<Dinosaur> lstDinosaurs = new List<Dinosaur>();

// gekürzt
Dinosaur compy = new Dinosaur();
compy.Name = "Compsognathus";
compy.Period = "Jurassic";
lstDinosaurs.Add(compy);

Nur Sortieren, Durchsuchen und andere Funktionen bieten generische Listen ab Werk und müssen nicht extra implementiert werden.

Woher ich das weiß:Studium / Ausbildung
Kieselsaeure  19.12.2018, 21:58

Omg ich dachte Dinosaurier gibts nichtmehr :O scheinbar hat sich die Menschheit geirrt

0
planets23 
Fragesteller
 19.12.2018, 22:01

Eigene list Typen klingt gut, danke für den Tipp!

0
jort93  19.12.2018, 22:03
@planets23

Die brauchst du ja aber für deine anwendung (wahrschenlich) nicht. Wenn du nur einen text in worte aufteilst(was du zu tun scheinst) musst du dir ja dafür keinen eigenen datentyp definieren. Dafür ist string schon ziemlich geeignet.

0
planets23 
Fragesteller
 19.12.2018, 22:06
@jort93

ich denke da an Häufigkeitsanalysen, bei denen ich den Key passend definieren kann und den value für den counter nehme. Oder Sortier-Operationen ... Ich weiß noch nicht ganz genau wo die Reise bei den Textanalysen hingeht, aber als erster Tipp geht es schon mal mit list einen Schritt weiter.

0
Arimatas  19.12.2018, 22:14

ich arbeite auch immer gerne mit listen, weil die so simple und mächtig sind :)
Solltest du warum auch immer em ende doch ein array benötigen kannst du die Liste umwandeln

string[] array = list.ToArray();
1

Prinzipiell alle collections/aufzählungen(oder nicht?) https://docs.microsoft.com/de-de/dotnet/api/system.collections.generic

Also dictionarys, stacks, queues, lists... Die wachsen alle automatisch mit.

In deinem fall willst du wohl eine list haben.

planets23 
Fragesteller
 19.12.2018, 21:54

Danke, kennt Ihr eine Übersichtseite auf der Vor- und Nachteile der verschiedenen Datentypen aufgezeigt werden? Ich schreibe gerade ein Programm, dass Texte mit Regex.Split zerteilt und dann verschiedene Analysen und weiterführende String Operationen ausführen soll. Als C# Anfänger bin ich am rätseln, welche Datentypen ich am Besten für welche Zwecke am Besten verwende ...

0
jort93  19.12.2018, 21:59
@planets23

Naja, der dateityp wird auf jeden fall string sein, egal ob jetzt liste oder array.

Ich würde einfach eine "normale" Liste nutzen. Damit machst du im zweifelsfall wenig falsch.

1

Dictionary oder List habe ich in Erinnerung.