Freigeben über


Auflistungen in .NET Framework mit Visual Basic

Aktualisiert: November 2007

.NET Framework stellt spezialisierte Klassen für das Speichern und Abrufen von Daten bereit. Diese Klassen bieten Unterstützung für Stapel, Warteschlangen, Listen und Hashtabellen. Die meisten Auflistungsklassen implementieren dieselben Schnittstellen. Sie können bei Bedarf benutzerdefinierte Auflistungsklassen erstellen, indem Sie diese Schnittstellen implementieren.

Ermitteln Sie zuvor, welche Art von Auflistung am besten für Ihre Anforderungen geeignet ist.

Unterschiede zwischen Auflistungsklassen in Visual Basic und .NET Framework

Die .NET Framework-Auflistungsklassen werden in den Namespaces System.Collections, System.Collections.Generic, System.Collections.Specialized und System.Collections.ObjectModel definiert. Im Folgenden werden die wichtigsten Unterschiede zwischen den Auflistungsklassen von Visual Basic und .NET Framework beschrieben:

  • Indexbasis. .NET Framework-Auflistungen sind nullbasiert, während die Visual Basic-Auflistung 1-basiert ist. Dies bedeutet, dass die Elemente einer Visual Basic-Auflistung über Indexwerte von 1 bis zum Wert der Count-Eigenschaft (Collection-Objekt) verfügen, während die Indexwerte der Elemente einer .NET Framework-Auflistung von 0 (null) bis zum Wert der Count-Eigenschaft der Auflistung minus 1 reichen.

  • Elementtyp. Die Visual Basic-Auflistung unterstützt Elemente des Typs Object. Diese Auflistung ist nicht typsicher, d. h., Sie können Elemente mit beliebigen Datentypen hinzufügen. Dies führt i. d. R. zu einer niedrigeren Leistung, da die Elemente aus dem Object-Datentyp in ihren eigentlichen Typ konvertiert werden müssen.

    Einige .NET Framework-Auflistungen enthalten ebenfalls Elemente vom Typ Object, doch viele andere sind stark typisiert. Dies bedeutet, dass sie Elemente eines bestimmten Typs unterstützen und daher typsicher sind. Dies hat i. d. R. eine optimale Leistung zur Folge.

  • Elemente mit Schlüsseln. Die Visual Basic-Auflistung ermöglicht es Ihnen, beim Hinzufügen eines Elements einen Schlüssel anzugeben. Der Schlüssel ist ein eindeutiger Zeichenfolgenwert, den Sie später für den Zugriff auf das jeweilige Element verwenden können. Die .NET Framework-Auflistungen unterscheiden sich in Bezug auf Schlüssel. Einige unterstützen Schlüssel und andere nicht.

System.Collections-Klassen

Bei den Klassen im System.Collections-Namespace werden Elemente nicht als speziell typisierte Objekte, sondern als Objekte vom Typ Object gespeichert.

In der folgenden Tabelle werden einige häufig verwendete Klassen aufgelistet:

Klasse

Beschreibung

ArrayList

Implementiert die IList-Schnittstelle. Dabei wird ein Array verwendet, dessen Größe je nach Bedarf dynamisch erhöht wird.

BitArray

Verwaltet ein komprimiertes Array von Bitwerten, die als Boolean-Werte dargestellt sind. True bezeichnet hierbei ein gesetztes Bit (1), und False bezeichnet ein nicht gesetztes Bit (0).

Hashtable

Stellt eine Auflistung von Schlüssel-Wert-Paaren dar, die auf Grundlage des Hashcodes des Schlüssels geordnet sind.

Queue

Stellt eine FIFO (First-In-First-Out)-Auflistung von Objekten dar.

Stack

Stellt eine einfache, nicht generische LIFO (Last-In-First-Out)-Auflistung von Objekten dar.

System.Collections.Generic-Klasse und System.Collections.ObjectModel-Klasse

Der System.Collections.Generic-Namespace und der System.Collections.ObjectModel-Namespace stellen generische Typen bereit, mit denen Sie stark typisierte Auflistungen erstellen und beim Erstellen den Elementdatentyp angeben können.

In der folgenden Tabelle werden einige häufig verwendete Klassen aufgelistet:

Klasse

Beschreibung

Collection<T>

Stellt die Basisklasse für eine generische Auflistung bereit.

Dictionary<TKey, TValue>

Stellt eine Auflistung von Schlüssel-Wert-Paaren dar, deren Reihenfolge anhand des Schlüssels bestimmt wird.

KeyedCollection<TKey, TItem>

Stellt die abstrakte Basisklasse für eine Auflistung bereit, deren Schlüssel innerhalb der Werte eingebettet sind.

LinkedList<T>

Stellt eine doppelt verknüpfte Liste dar.

LinkedListNode<T>

Stellt einen Knoten in einer LinkedList<T> dar. Diese Klasse kann nicht vererbt werden.

List<T>

Implementiert die IList<T>-Schnittstelle. Dabei wird ein Array verwendet, dessen Größe je nach Bedarf dynamisch erhöht wird.

Queue<T>

Stellt eine FIFO (First-In-First-Out)-Auflistung von Objekten dar.

SortedDictionary<TKey, TValue>

Stellt eine Auflistung von Schlüssel-Wert-Paaren dar, deren Reihenfolge anhand des Schlüssels bestimmt wird.

SortedList<TKey, TValue>

Stellt eine Auflistung von Schlüssel-Wert-Paaren dar, die auf Grundlage der zugeordneten IComparer<T>-Implementierung nach den Schlüsseln sortiert sind.

Stack<T>

Stellt eine LIFO (Last-In-First-Out)-Auflistung variabler Größe von Instanzen desselben beliebigen Typs dar.

ReadOnlyCollection<T>

Stellt die Basisklasse für eine generische schreibgeschützte Auflistung bereit.

System.Collections.Specialized-Klassen

Der System.Collections.Specialized-Namespace bietet spezialisierte und stark typisierte Auflistungsklassen, beispielsweise für Zeichenfolgenauflistungen sowie für Wörterbücher mit verketteten Listen und Hybridwörterbücher.

In der folgenden Tabelle werden einige häufig verwendete Klassen aufgelistet:

Klasse

Beschreibung

CollectionsUtil

Erstellt Auflistungen, bei denen die Groß- und Kleinschreibung in Zeichenfolgen ignoriert wird.

HybridDictionary

Implementiert IDictionary. Dabei wird bei kleinen Auflistungen ein ListDictionary verwendet, und bei größeren Auflistungen wird zu einer Hashtable gewechselt.

ListDictionary

Implementiert IDictionary unter Verwendung einer einfach verknüpften Liste. Empfohlen für Auflistungen, die i. d. R. 10 Elemente oder weniger enthalten.

NameObjectCollectionBase

Stellt die abstrakte Basisklasse für eine Auflistung von verbundenen Zeichenfolgenschlüsseln und Objektwerten bereit, auf die sowohl über den Schlüssel als auch über den Index zugegriffen werden kann.

NameValueCollection

Stellt eine Auflistung von verbundenen Zeichenfolgenschlüsseln und Zeichenfolgenwerten dar, auf die sowohl über den Schlüssel als auch über den Index zugegriffen werden kann.

OrderedDictionary

Stellt eine Auflistung von Schlüssel-Wert-Paaren dar, die nach Schlüssel oder Index geordnet sind.

StringCollection

Stellt eine Auflistung von Zeichenfolgen dar.

StringDictionary

Implementiert eine Hashtabelle, bei der Schlüssel und Wert stark als Zeichenfolgen und nicht als Objekte typisiert sind.

Siehe auch

Konzepte

Auflistungen in Visual Basic

Referenz

Collection-Objekt (Visual Basic)

Weitere Ressourcen

Erweiterte Verwendung von Visual Basic