Freigeben über


Auswählen einer Auflistungsklasse

Aktualisiert: November 2007

Wählen Sie Ihre System.Collections-Klasse sorgfältig aus. Wenn der falsche Typ ausgewählt wird, kann dies die Verwendung der Auflistung einschränken.

Beachten Sie Folgendes:

  • Benötigen Sie eine sequenzielle Liste, bei der ein Element normalerweise verworfen werden kann, wenn sein Wert abgerufen wurde?

    • Wenn dies zutrifft, sollten Sie die Verwendung der Queue-Klasse oder der generischen Queue<T>-Klasse in Erwägung ziehen, falls FIFO (First-in-First-out-)Verhalten erforderlich ist. Falls Sie LIFO (Last-in-First-out-)Verhalten benötigen, sollten Sie die Stack-Klasse oder die generische Stack<T>-Klasse in Erwägung ziehen.

    • Falls nicht, verwenden Sie die übrigen Auflistungen.

  • Benötigen Sie Zugriff auf Elemente in einer bestimmten Reihenfolge, z. B. FIFO-, LIFO- oder beliebiger Reihenfolge?

    • Die Queue-Klasse und die generische Queue<T>-Klasse bieten FIFO-Zugriff.

    • Die Stack-Klasse und die generische Stack<T>-Klasse bieten LIFO-Zugriff.

    • Bei der generischen LinkedList<T>-Klasse ist ein sequenzieller Zugriff entweder von oben nach unten oder von unten nach oben möglich.

    • Bei den übrigen Auflistungen erfolgt der Zugriff zufällig.

  • Möchten Sie auf die einzelnen Elemente mithilfe eines Indizes zugreifen?

  • Wird jedes Element einen Wert enthalten, eine Kombination aus einem Schlüssel und einem Wert oder eine Kombination aus einem Schlüssel und mehreren Werten?

    • Ein Wert: Verwenden Sie eine der Auflistungen, die auf der IList-Schnittstelle oder der generischen IList<T>-Schnittstelle basiert.

    • Ein Schlüssel und ein Wert: Verwenden Sie eine der Auflistungen, die auf der IDictionary-Schnittstelle oder der generischen IDictionary<TKey, TValue>-Schnittstelle basiert.

    • Ein Wert mit eingebettetem Schlüssel: Verwenden Sie die allgemeine KeyedCollection<TKey, TItem>-Klasse.

    • Ein Schlüssel und mehrere Werte: Verwenden Sie die NameValueCollection-Klasse.

  • Müssen die Elemente unabhängig von der Reihenfolge ihrer Eingabe sortiert werden?

  • Ist schnelles Suchen und Abrufen von Informationen erforderlich?

  • Werden Auflistungen gebraucht, die nur Zeichenfolgen annehmen?

LINQ to Objects

Mit dem LINQ to Objects-Feature können Entwickler 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. Außerdem können LINQ-Abfragen auch Leistungssteigerungen bereitstellen. Weitere Informationen finden Sie unter LINQ to Objects.

Siehe auch

Referenz

System.Collections

System.Collections.Specialized

System.Collections.Generic

Weitere Ressourcen

Erstellen und Verändern von Auflistungen