Auflistungen mit der ArrayList

Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!

Von VBA kennen Sie als Auflistungsklassen zunächst die eingebaute Collection. Wer noch etwas weiter geht, bindet die Scripting Runtime Library ein und nutzt die Dictionary-Klasse zum Speichern von Auflistungen. Über den reinen Programmcode hinweg ließen sich diese Elemente unter VBA kaum nutzen – als Datenherkunft etwa für Formular oder Kombinationsfelder taugten sie nicht. Unter C# sieht dies anders aus. Es gibt eine ganze Reihe verschiedener Auflistungsklassen, die sich teilweise auch als Datenherkunft für Steuerelemente eignen. In diesem Artikel schauen wir uns die ArrayList als Vertreter der Auflistungsklassen an.

Die Auflistungsklasse ArrayList steckt im Namespace System.Collections. Diese fügen Sie mit der using-Anweisung zur Klasse hinzu – also so:

using System.Collections;

Auf diese Weise können Sie gleich auf das ArrayList-Objekt und seine Methoden und Eigenschaften zugreifen und müssen nicht immer den Namespace voranstellen. Ohne Angabe des Namespace mit der using-Anweisung wäre für die Deklaration beispielsweise diese Zeile nötig:

System.Collections.ArrayList arrayList;

Wenn Sie den Namespace zuvor wie oben beschrieben angegeben haben, reicht dies aus:

ArrayList arrayList;

Schnittstellen von Auflistungsklassen

Neben den eigentlichen Collection-Klassen enthalten die beiden Namespaces noch einige weitere Objekte. Einige davon sind Interfaces, also Schnittstellenklassen. Diese beschreiben die grundlegenden Methoden und Eigenschaften der Collection-Objekte. Die Collection-Objekte implementieren diese Schnittstellen, was kurz gefasst bedeutet, dass sie die für die Schnittstelle vorgegebenen Methoden, Eigenschaften und Ereignisse enthalten.

Diese Schnittstellenklassen sehen Sie sich am besten im Objektkatalog an (Strg + Alt + J). Wenn Sie dort unter mscorlib den Eintrag System.Collections auswählen, erhalten Sie die Übersicht aus Bild 1. Dort sehen Sie, dass zum Beispiel die Methode Add zum Hinzufügen eines Auflistungsobjekts aus der Schnittstelle IList stammt – genauso wie einige andere Methoden. Die folgenden Schnittstellenklassen liefern die meisten Methoden und Eigenschaften, aus denen sich die verschiedenen Auflistungsklassen zusammensetzen:

Schnittstelle einer Auflistungsklasse im Objektkatalog

Bild 1: Schnittstelle einer Auflistungsklasse im Objektkatalog

  • ICollection: Liefert neben anderen die Count-Eigenschaft zum Ermitteln der Anzahl der Elemente und die CopyTo-Methode, mit der Sie den Inhalt der Auflistungsklasse in ein Array kopieren können.
  • IList: Liefert Methoden, um Listenelemente hinzuzufügen, zu entfernen oder deren Informationen zu ermitteln. Auflistungsklassen, die diese Schnittstelle implementieren, stellen ihre Elemente über einen Index bereit. Dies entspricht also etwa dem Collection-Objekt, das Sie von VBA kennen. Die Elemente der IList-Schnittstelle haben Sie bereits im Artikel Von VBA Zu C#: Arrays (www.datenbankentwickler.de/6) kennengelernt.
  • IDictionary: Liefert ähnliche Methoden wie IList, aber ist für die Verwaltung von Name-Wert-Paaren ausgelegt. Dies entspricht dem Dictionary-Objekt der Scripting Runtime Library, das Sie möglicherweise unter VBA genutzt haben.
  • IEnumerable: Steuert die Möglichkeit bei, die Elemente einer Auflistung per foreach-Schleife zu durchlaufen.

Diese Schnittstellenklassen liefern allerdings nicht alle Methoden und Eigenschaften etwa der ArrayList-Klasse – diese trägt selbst auch noch eigene Elemente bei.

ArrayList deklarieren und instanzieren

Ein ArrayList-Objekt können Sie in zwei Schritten deklarieren und instanzieren:

ArrayList arrayList;
arrayList = new ArrayList();

Wenn diese beiden Anweisungen ohnehin direkt nacheinander ausgeführt werden, können Sie dies auch in einer Zeile durchführen:

ArrayList arrayList = new ArrayList();

Elemente hinzufügen

Die einfachste Methode, ein Element zu einer ArrayList hinzuzufügen, ist die Add-Methode. Sie erwartet lediglich den hinzuzufügenden Wert beziehungsweise die Variable mit dem Objektverweis als Parameter. Die folgenden Anweisungen füllen das Array beispielsweise mit drei Zeichenketten:

arrayList.Add("Element 1");
arrayList.Add("Element 2");
arrayList.Add("Element 3");

Die Add-Methode fügt die Elemente immer hinten an die Liste an.

Index beim Hinzufügen ermitteln

Wenn Sie gleich beim Hinzufügen den Indexwert für das neue Element ermitteln wollen, speichern Sie das Ergebnis der Add-Methode in einer Integer-Variablen. Diesen können Sie dann wie folgt auf der Konsole ausgeben:

int indexNeuesElement = arrayList.Add("Element 4");
Console.WriteLine("Der Index des neuen Elements lautet: {0}", indexNeuesElement);

Elemente direkt beim Initialisieren hinzufügen

Sie können auch direkt beim Initialisieren eine Liste der Elemente in geschweiften Klammern angeben:

arrayList = new ArrayList { "Element 1", "Element 2", "Element 3" };

Anzahl der Elemente beim Erstellen angeben

Sie können beim Erstellen eines ArrayList-Objekts gleich die Anzahl der Einträge angeben – und zwar in Klammern hinter dem ArrayList-Schlüsselwort nach der new-Anweisung. Folgendes legt eine ArrayList mit drei Elementen an, aber nur die ersten beiden werden gefüllt. Bei der Ausgabe berücksichtigt die foreach-Schleife nur solche Elemente, die auch gefüllt wurden:

 

Schreibe einen Kommentar