Freigeben über


Häufig verwendete Auflistungstypen

Sammlungstypen stellen unterschiedliche Methoden zum Sammeln von Daten dar, z. B. Hashtabellen, Warteschlangen, Stapel, Taschen, Wörterbücher und Listen.

Alle Auflistungen basieren entweder direkt oder indirekt auf den Schnittstellen ICollection oder ICollection<T>. IList und IDictionary und deren generische Gegenstücke leiten sich alle von diesen beiden Schnittstellen ab.

In Sammlungen, die auf IList oder direkt ICollectionbasieren, enthält jedes Element nur einen Wert. Zu diesen Typen gehören:

In Auflistungen, die auf der IDictionary Schnittstelle basieren, enthält jedes Element sowohl einen Schlüssel als auch einen Wert. Zu diesen Typen gehören:

Die KeyedCollection<TKey,TItem> Klasse ist eindeutig, da es sich um eine Liste von Werten mit schlüsseln handelt, die in die Werte eingebettet sind. Daher verhält es sich sowohl wie eine Liste als auch wie ein Wörterbuch.

Wenn Sie effizienten Multithread-Sammlungszugriff benötigen, verwenden Sie die generischen Auflistungen im System.Collections.Concurrent Namespace.

Die Klassen Queue und Queue<T> bieten First-in-First-Out-Listen an. Die Klassen Stack und Stack<T> stellen Last-In-First-Out-Listen bereit.

Starke Eingabe

Generische Sammlungen sind die beste Lösung für starkes Typisieren. Zum Beispiel führt das Hinzufügen eines Elements eines anderen Typs als Int32 zu einer List<Int32>-Sammlung zu einem Kompilierungsfehler. Wenn Ihre Sprache jedoch keine Generika unterstützt, enthält der System.Collections Namensraum abstrakte Basisklassen, die Sie erweitern können, um stark typisierte Sammlungs-Klassen zu erstellen. Zu diesen Basisklassen gehören:

Unterschiede bei Sammlungen

Sammlungen unterscheiden sich darin, wie elemente gespeichert, sortiert und verglichen werden, und wie sie Suchvorgänge ausführen.

Die SortedList Klasse und die SortedList<TKey,TValue> generische Klasse stellen sortierte Versionen der Hashtable Klasse und der Dictionary<TKey,TValue> generischen Klasse bereit.

Alle Auflistungen verwenden nullbasierte Indizes, außer Array, das Arrays erlaubt, die nicht nullbasiert sind.

Sie können auf die Elemente eines SortedList oder eines KeyedCollection<TKey,TItem> entweder durch den Schlüssel oder den Index des Elements zugreifen. Sie können nur auf die Elemente eines Hashtable oder eines Dictionary<TKey,TValue> durch den Schlüssel des Elements zugreifen.

Verwenden von LINQ mit Sammlungstypen

Das LINQ-to-Objects-Feature bietet ein einheitliches Muster für den Zugriff auf Objekte im Speicher eines beliebigen Typs, der IEnumerable oder IEnumerable<T> implementiert. LINQ-Abfragen haben gegenüber Standardkonstrukten wie foreach Schleifen mehrere Vorteile:

  • Sie sind prägnant und leichter zu verstehen.
  • Sie können Daten filtern, sortieren und gruppieren.
  • Sie können die Leistung verbessern.

Weitere Informationen finden Sie unter LINQ to Objects (C#),LINQ to Objects (Visual Basic) und Parallel LINQ (PLINQ).

Titel BESCHREIBUNG
Sammlungen und Datenstrukturen Erläutert die verschiedenen Sammlungstypen, die in .NET verfügbar sind, einschließlich Stapeln, Warteschlangen, Listen, Arrays und Wörterbüchern.
Hashtable- und Dictionary-Sammlungstypen Beschreibt die Features generischer und nichtgenerischer Hash-basierter Wörterbuchtypen.
Sortierte Auflistungstypen Beschreibt Klassen, die Sortierfunktionen für Listen und Sätze bereitstellen.
Generika Beschreibt das Generika-Feature, einschließlich der generischen Auflistungen, Stellvertretungen und Schnittstellen, die von .NET bereitgestellt werden. Enthält Links zur Featuredokumentation für C#, Visual Basic und Visual C++ und zu unterstützenden Technologien wie Spiegelung.

Referenz

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>