Share via


Häufig verwendete Auflistungstypen

Auflistungstypen sind allgemeine Variationen von Datenauflistungen, z. B. Hashtabellen, Warteschlangen, Stapel, Sammlungen, 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 (z. B. Array, ArrayList oder List<T>) oder direkt auf der ICollection-Schnittstelle basieren (z. B. Queue, ConcurrentQueue<T>, Stack, ConcurrentStack<T> oder LinkedList<T>), enthält jedes Element nur einen Wert. In Auflistungen, die auf der IDictionary-Schnittstelle basieren (z. B. die Hashtable- und SortedList-Klassen und die generischen Dictionary<TKey, TValue>- und SortedList<TKey, TValue>-Klassen), oder ConcurrentDictionary<TKey, TValue>-Klassen 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. Verwenden Sie die generischen Auflistungen im System.Collections.Concurrent-Namespace, wenn ein effizienter Zugriff auf Multithreadauflistungen erforderlich ist.

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-zu-Objekte und Paralleles LINQ (PLINQ).

Verwandte Themen

Titel

Beschreibung

Array-Auflistungstyp

Beschreibt die Funktionen von Arrays, durch die diese wie Auflistungen behandelt werden können.

ArrayList-Auflistungstyp und List-Auflistungstyp

Beschreibt die Funktionen 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.

Sortierte Auflistungstypen

Beschreibt Klassen, die eine Sortierfunktion für Listen und Sätze bereitstellen.

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 System.Collections.Generic.HashSet<T>-Auflistungstyp.

HashSet- und LINQ-Mengenoperationen

Beschreibt die vom System.Collections.Generic.HashSet<T>-Auflistungstyp und den LINQ-Mengenoperationen bereitgestellten Mengenoperationen.

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.

Verweise

System.Collections

System.Collections.Generic

System.Collections.ICollection

System.Collections.Generic.ICollection<T>

System.Collections.IList

System.Collections.Generic.IList<T>

System.Collections.IDictionary

System.Collections.Generic.IDictionary<TKey, TValue>