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
Array-Auflistungstyp
Beschreibt die Features von Arrays, die wie Auflistungen behandelt werden können.ArrayList-Auflistungstyp und List-Auflistungstyp
Beschreibt die Features von generischen und nicht generischen Listen, die die am häufigsten verwendeten Auflistungstypen darstellen.Hashtable-Auflistungstyp und Dictionary-Auflistungstyp
Beschreibt die Features von generischen und nicht generischen hashbasierten Wörterbuchtypen.SortedList-Auflistungstyp und SortedDictionary-Auflistungstyp
Beschreibt das sortierte Wörterbuch und Hybridwörterbuchtypen, in denen Wörterbuch- und Listenfunktionen kombiniert sind.Queue-Auflistungstypen
Beschreibt die Features von generischen und nicht generischen Warteschlangen.Stack-Auflistungstypen
Beschreibt die Features von generischen und nicht generischen Stapeln.HashSet-Auflistungstyp
Beschreibt den generischen HashSet<T>-Auflistungstyp.HashSet- und LINQ-Mengenoperationen
Beschreibt die vom HashSet<T>-Auflistungstyp und den LINQ-Mengenoperationen bereitgestellten Mengenoperationen.
Referenz
System.Collections
Bietet eine Referenzdokumentation für den System.Collections-Namespace, der Schnittstellen und Klassen enthält, die verschiedene Objektauflistungen definieren.System.Collections.Generic
Bietet eine Referenzdokumentation für den System.Collections.Generic-Namespace, der Schnittstellen und Klassen enthält, die generische Auflistungen definieren.System.Collections.ICollection
Beschreibt die wichtigsten Features der ICollection-Klasse, in der die Größe sowie Enumeratoren und Synchronisierungsmethoden für alle nicht generischen Auflistungen beschrieben werden.System.Collections.Generic.ICollection<T>
Beschreibt die wichtigsten Features der ICollection<T>-Klasse, in der Methoden zum Bearbeiten generischer Auflistungen beschrieben werden.System.Collections.IList
Beschreibt die wichtigsten Features der IList-Klasse, die eine nicht generische Auflistung von Objekten darstellt, auf die einzeln nach Index zugegriffen werden kann.System.Collections.Generic.IList<T>
Beschreibt die wichtigsten Features der IList<T>-Klasse, die eine Auflistung von Objekten darstellt, auf die einzeln nach Index zugegriffen werden kann.System.Collections.IDictionary
Beschreibt die wichtigsten Features der IDictionary-Klasse, die eine nicht generische Auflistung von Schlüssel/Wert-Paaren darstellt.System.Collections.Generic.IDictionary<TKey, TValue>
Beschreibt die wichtigsten Features der IDictionary<TKey, TValue>-Klasse, die eine generische Auflistung von Schlüssel/Wert-Paaren darstellt.
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.