Häufig verwendete Auflistungstypen

Aktualisiert: November 2007

Auflistungstypen sind allgemeine Variationen von Datenauflistungen, z. B. Hashtabellen, Warteschlangen, Stapel, Wörterbücher und Listen.

Auflistungen basieren auf der ICollection-Schnittstelle, der IList-Schnittstelle, der IDictionary-Schnittstelle oder ihren generischen Entsprechungen. Die IList-Schnittstelle und die IDictionary-Schnittstelle werden beide von der ICollection-Schnittstelle abgeleitet. Daher basieren alle Auflistungen direkt oder indirekt auf der ICollection-Schnittstelle. In Auflistungen, die auf der IList-Schnittstelle basieren (beispielsweise Array, ArrayList oder List<T>) oder direkt auf der ICollection-Schnittstelle (beispielsweise Queue, Stack oder LinkedList<T>) enthält jedes Element nur einen Wert. In Auflistungen, die auf der IDictionary-Schnittstelle basieren (z. B. die Hashtable-Klasse und die SortedList-Klasse oder die generische Dictionary<TKey, TValue>-Klasse und die generische SortedList<TKey, TValue>-Klasse), enthält jedes Element sowohl einen Schlüssel als auch einen Wert. Die KeyedCollection<TKey, TItem>-Klasse ist eindeutig, da sie eine Liste von Werten mit darin eingebetteten Schlüsseln darstellt und sich deshalb wie eine Liste und wie ein Wörterbuch verhält.

Generische Auflistungen sind die beste Lösung für starke Typisierung. Wenn Ihre Sprache Generika jedoch nicht unterstützt, enthält der System.Collections-Namespace Basisauflistungen, z. B. CollectionBase, ReadOnlyCollectionBase und DictionaryBase, bei denen es sich um abstrakte Basisklassen handelt, die erweitert werden können, sodass stark typisierte Auflistungsklassen erstellt werden können.

Auflistungen können sich sehr unterscheiden in Abhängigkeit davon, wie ihre Elemente angeordnet sind, wie sie gespeichert werden, wie Suchvorgänge durchgeführt und wie Vergleiche angestellt werden. Die Queue-Klasse und die generische Queue<T>-Klasse stellen FIFO-Listen (First-in-First-out) bereit, während die Stack-Klasse und die generische Stack<T>-Klasse LIFO-Listen (Last-in-First-out) bereitstellen. Die SortedList-Klasse und die generische SortedList<TKey, TValue>-Klasse stellen sortierte Versionen der Hashtable-Klasse und der generischen Dictionary<TKey, TValue>-Klasse bereit. Auf Elemente in Hashtable oder Dictionary<TKey, TValue> kann nur über den Schlüssel des Elements zugegriffen werden, während auf die Elemente von SortedList oder KeyedCollection<TKey, TItem> entweder über den Schlüssel oder über den Index des Elements zugegriffen werden kann. Die Indizes in allen Auflistungen, außer Array, sind nullbasiert, wodurch auch Arrays zulässig sind, die nicht auf 0 (null) basieren.

Mit dem LINQ to Objects-Feature können Sie LINQ-Abfragen für den Zugriff auf Objekte im Arbeitsspeicher verwenden, solange der Objekttyp IEnumerable oder IEnumerable<T> implementiert. LINQ-Abfragen bieten ein allgemeines Muster für den Datenzugriff, sind normalerweise präziser und besser lesbar als standardmäßige foreach-Schleifen und stellen Filter-, Sortier- und Gruppierungsfunktionen bereit. LINQ-Abfragen können auch die Leistung verbessern. Weitere Informationen finden Sie unter LINQ to Objects.

In diesem Abschnitt

Referenz

Verwandte Abschnitte

  • Auflistungen und Datenstrukturen
    Erläutert die unterschiedlichen Auflistungstypen, die in .NET Framework verfügbar sind, z. B. Stapel, Warteschlangen, Listen, Arrays und Strukturen.

  • Generika in .NET Framework
    Beschreibt das Generikafeature, einschließlich der generischen Auflistungen, Delegaten und Schnittstellen, die von .NET Framework bereitgestellt werden. Enthält Links zur Featuredokumentation für C#, Visual Basic und Visual C++ sowie zu unterstützenden Technologien wie der Reflektion.