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 Sammlungen basieren entweder direkt oder ICollection<T> indirekt auf den ICollection Schnittstellen. IList und IDictionary ihre generischen Gegenstücke werden von diesen beiden Schnittstellen abgeleitet.

In Sammlungen basierend IList auf oder direkt ICollectionenthält jedes Element nur einen Wert. Zu diesen Typen gehören:

In Sammlungen basierend auf der IDictionary Schnittstelle 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 innerhalb der Werte eingebettet sind. Daher verhält es sich sowohl wie eine Liste als auch wie ein Wörterbuch.

Wenn Sie einen effizienten Mehrthread-Auflistungszugriff benötigen, verwenden Sie die generischen Sammlungen im System.Collections.Concurrent Namespace.

Die und Queue<T> Klassen Queue bieten first-in-first-out-Listen. Die und Stack<T> Klassen Stack stellen last-in-first-out-Listen bereit.

Starke Typisierung

Generische Auflistungen sind die beste Lösung für eine starke Typisierung. Das Hinzufügen eines Elements eines anderen Typs als Int32 einer List<Int32> Auflistung verursacht beispielsweise einen Kompilierungszeitfehler. Wenn Ihre Sprache jedoch keine Generischen unterstützt, enthält der System.Collections Namespace abstrakte Basisklassen, die Sie erweitern können, um Auflistungsklassen zu erstellen, die stark eingegeben werden. Diese Basisklassen umfassen:

Wie Sammlungen variieren

Sammlungen variieren in der Art und Weise, wie sie Elemente speichern, sortieren und vergleichen und wie sie Suchvorgänge ausführen.

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

Alle Sammlungen verwenden nullbasierte Indizes außer Array, die Arrays ermöglichen, die nicht nullbasiert sind.

Sie können auf die Elemente einer oder einer SortedListKeyedCollection<TKey,TItem> durch den Schlüssel oder den Index des Elements zugreifen. Sie können nur auf die Elemente eines elements oder eines HashtableDictionary<TKey,TValue> durch den Schlüssel des Elements zugreifen.

Verwenden von LINQ mit Auflistungstypen

Das LINQ to Objects-Feature bietet ein allgemeines Muster für den Zugriff auf Speicherobjekte eines beliebigen Typs, der implementiert oder implementiert IEnumerable wirdIEnumerable<T>. LINQ-Abfragen verfügen über mehrere Vorteile über Standardkonstrukte wie foreach Schleifen:

  • Sie sind präzise und einfacher zu verstehen.
  • Sie können Daten filtern, bestellen 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 unterschiedlichen Auflistungstypen, die in .NET verfügbar sind, z. B. Stapel, Warteschlangen, Listen, Arrays und Wörterbücher.
Hashtable-Auflistungstyp und Dictionary-Auflistungstyp Beschreibt die Funktionen von generischen und nicht generischen hashbasierten Wörterbuchtypen.
Sortierte Auflistungstypen Beschreibt Klassen, die Sortierfunktionen für Listen und Sätze bereitstellen.
Generics In diesem Artikel wird das Generics-Feature beschrieben, einschließlich der generischen Auflistungen, Delegaten und Schnittstellen, die von .NET bereitgestellt werden. Enthält Links zur Featuredokumentation für C#, Visual Basic und Visual C++ sowie zu unterstützenden Technologien wie der Reflektion.

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>