Fortgeschrittene Grundlagen: Listen

Listen sind eine bessere Form von Arrays. Der Vorteil von Listen besteht hauptsächlich darin, dass diese nach Belieben vergrößert werden und einzelne Elemente auch wieder gelöscht werden können, ohne das Array komplett neu zu erstellen. In C# gibt es die ArrayList und die List. ArrayList ist an keinen bestimmten Typ gebunden, d. h. hier können sowohl int-Werte als auch string-Werte im selben Array gespeichert werden. Neben einigen Problemen bei der Verarbeitung dieser Werte ist die ArrayList des Weiteren ein schlechter Programmierstil, weshalb wir uns nur mit der List genauer auseinandersetzen werden.
Die List ist an einen generischen Typ gebunden, d. h. hier können nur Werte desselben Datentyps gespeichert werden. Der Datentyp der hier verwendet wird, ist jedoch unabhängig und muss lediglich bei der Deklaration angegeben werden, d. h. wir können eine solche Liste auch mit selbst deklarierten Objekten erstellen. Der Programmcode der sich hinter der List-Klasse befindet, existiert deshalb nur einmal, wodurch man von generischen Typen spricht. Wie Ihnen vielleicht schon aufgefallen ist, kann mit der Funktion Sort() der Klasse Array ebenfalls ein statisches Array jedes Datentyps sortiert werden. Dies liegt daran, dass die Sort()-Funktion als Parameter ein Array eines generischen Typs (und somit unabhängig vom Datentyp) erwartet.
Eine Liste ist ein Klasse, weshalb wir das Schlüsselwort new benötigen, um ein Objekt davon zu erstellen. Der generische Typ wird in spitzen Klammern direkt hinter dem Klassennamen notiert. Mit der Funktion Add() können wir der Liste ein neues Element hinzufügen. Das Element wird dabei am Ende der Liste angehängt. Mit Insert() können wir ein Element am gewünschten Index einfügen. Die dahinter folgenden Elemente werden dabei um einen Index weiter verschoben. Die Funktion Remove() entfernt das gewünschte Element. Falls das Element mehrmals in der Liste vorhanden ist, wird lediglich das erste gefundene Element entfernt. Die Funktionen IndexOf() und LastIndexOf() dienen zur Suche nach einem Element, bei dem der dazugehörige Index zurückgegeben wird. Bleibt die Suche erfolglos, wird -1 zurückgegeben. Auch für die Sortierung gibt es eine Funktion: Mit Sort() erfolgt eine Sortierung an Hand des Standardvergleichs, d. h. bei einzelnen Zeichen bzw. Zeichenketten alphabetisch und bei Zahlen numerisch.

Program.cs

List<string> lZeichenketten = new List<string>();

lZeichenketten.Add("C#-Buch");
lZeichenketten.Add(".NET Framework");
lZeichenketten.Add("Visual Studio");

// da die Liste Zeichenketten enthält, erfolgt eine alphabetische Sortierung
// bei nummerischen Typen würde eine nummerische Sortierung erfolgen
// Objekt können nicht ohne weiteres sortiert werden, hierfür wird LINQ benötigt
lZeichenketten.Sort();

Console.WriteLine("Sortierte Liste:");
foreach (string sZeichenkette in lZeichenketten)
	Console.WriteLine(sZeichenkette);

Console.WriteLine();

// falls C#-Buch mehrmals vorkommen würde, kann der Index des letzten Vorkommens mit LastIndexOf() ermittelt werden
Console.WriteLine("Die Zeichenkette \"C#-Buch\" befindet sich am Index {0}.", lZeichenketten.IndexOf("C#-Buch"));

lZeichenketten.Insert(1, "Microsoft");      // einfügen an Index 1 (2. Element)
lZeichenketten.Remove("Visual Studio");     // falls "Visual Studio" mehrmals vorkommt, wird nur der 1. Eintrag gelöscht

Console.WriteLine();

Console.Write("Geben Sie einen Eintrag für die Liste ein: ");
lZeichenketten.Add(Console.ReadLine());

Console.WriteLine("aktuelle Liste:");
foreach (string sZeichenkette in lZeichenketten)
	Console.WriteLine(sZeichenkette);

Console.ReadKey();
Download

LinksRechts