Generische Aufzählungen

Generische Aufzählungen

Das .NET Framework stellt uns im Namensraum „System.Collections.Generics“ generische Aufzählungen zur Verfügung. Generische Aufzählungen haben den Vorteil, dass sie sicherer und effizienter sind, da schon bei der Deklaration der Datentyp festgelegt wird.
In diesem Artikel erläutere ich neun generischen Aufzählungen:

Arrays (Felder)
• List
• LinkedList
• BindingList (Namensraum: „System.ComponentModel“)
• Dictionary<TKey, TValue>
• SortedList<TKey, TValue>
• SortedDictionary(TKey, TValue>
• Queue
• Stack

Arrays
Aufzählungen aus der Klasse „System.Array“ bietet die Möglichkeit große Datenmengen eines vorher festgelegten Datentyps und Feldgröße zu speichern. Die Werte eines Arrays werden über einen Index (z. B. MyArray[3]) angesprochen. Des Weiteren ist es möglich, mehrdimensionale Arrays zu verarbeiten. Um effizient mit Arrays zu arbeiten ist es notwendig die Größe der zu speichernden Feldern bereits bei der Deklaration festzulegen.

List
List arbeitet ähnlich wie das oben beschriebene Array. Der Zugriff eines Eintrags kann wie bei einem Arrays mit der Angabe eines Index aufgerufen werden. Es ist möglich die Aufzählung mit der Methode „Sort“ zu sortieren. Der entscheidende Vorteil dieser Aufzählung ist, das bei der Deklaration nicht feststehen muss, welche Größe die Aufzählung besitzt. List ändert beim hinzufügen (Methode „Add“) oder beim entfernen (Methode „Remove“) von Einträgen automatisch die Feldgröße.

LinkedList
Für manche Algorithmen und weiteren Anwendungsfällen ist es notwendig eine LinkedList-Aufzählung zu nutzen. Diese arbeitet ähnlich wie List, und bildet alle Elemente in die „LinkedListNode Klasse ab. Attribute wie Previous und Next verweisen auf Voränger und Nachfolgende Elemente.

BindingList
BindingList kann dazu verwendet werden, wenn Sie vorhaben eine Aufzählung direkt an einem Datenbanksteuerelement zu binden.

Dictionary<TKey, TValue>
In einer Dictionary Aufzählung kann statt eines numerischen Integer Indexes ein beliebiges Objekt verwendet werden wie zum Beispiel eine Zeichenkette (vom Typ „String“). Die Elemente der Aufzählung werden mit einem hash-Wert gespeichert, so kann man sicherstellen, dass nicht gleichnamige Objektnamen zu einer Dateninkonsistenz führen (Methoden dafür z.B. „GetHashCode“ und „ContainsKey“). Wie bei der List ist es möglich neue Elemente in die Dictionary<TKey, TValue> Aufählung einzufügen. In dieser Aufzählung kann nicht sortiert oder auf einzelne Elemente mit Hilfe eines (Integer) Indexes zugegriffen werden.
SortedList<TKey, TValue>
Die SortedList Aufzählung beinhaltet ähnlich Funktionen wie die Dictionary Aufzählung. Im Vergleich zur „SortedDictionary“ –Aufzählung unterscheidet sie sich mit dem Zugriff auf ein Element, auf dieses kann mit Angabe eines Indexes zugegriffen werden. Wenn bereits sortierte Elemente eingefügt werden wird von dieser Aufzählung weniger Speicher benötigt als eine „SortedDictionary“.

SortedDictionary(TKey, TValue)
Diese Aufzählung ähnelt dem Dictionary mit dem Unterschied das die Elemente automatisch sortiert werden. Der Vorteil dieser Aufzählung ist die schnellere Einfüge- und Löschaktionen von Elementen im Vergleich zu SortedList<TKey, TValue>.

Queue
Queue wird verwendet wenn die Elemente in der Reihenfolge genutzt werden soll, in der sie eingefügt wurde. Diese Klasse ist für eine komplexere Verwaltung funktionell eingeschränkter als z.B. die List oder Dictionary Klassen.

Stack
Dies Aufzählung Stack arbeitet wie Queue mit dem Unterschied das die umgekehrte Reihenfolge genutzt wird. Auch hier ist die weitere Verarbeitung und Verwaltung der Elemente eingeschränkter als die List und Dictionary Klasse.

Fazit
Mit dem .NET Framework haben wir eine mannigfaltige Möglichkeit eine für unseren Anwendungsfall passende, generische Aufzählung auszuwählen. Ist man sich jedoch noch nicht ganz sicher für welche man sich entscheiden soll kann man sich dazu entschließen das Thema noch weiter zu vertiefen, sich die einzelnen Möglichkeiten in Testprojekten genauer zu betrachten oder man nutzt auf Grund der vielfältigen, flexiblen Nutzungsmöglichkeiten die List oder Dictionary<TKey, TKValue> Klasse. Damit ist man für den Anfang gut beraten.

Comments

comments

Kommentar verfassen