Freigeben über


Auswählen einer Auflistungsklasse

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-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-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-Klasse bieten FIFO-Zugriff.

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

    • Bei der generischen LinkedList-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-Schnittstelle basiert.

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

    • Ein Wert mit eingebettetem Schlüssel: Verwenden Sie die generische KeyedCollection-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?

    • Die Hashtable-Klasse sortiert ihre Elemente anhand ihrer Hashcodes.

    • Die SortedList-Klasse sowie die generische SortedDictionary-Klasse und die generische SortedList-Klasse sortieren ihre Elemente nach dem Schlüssel auf der Grundlage der Implementierungen der IComparer-Schnittstelle und der generischen IComparer-Schnittstelle.

    • ArrayList stellt eine Sort-Methode bereit, die eine IComparer-Implementierung als Parameter akzeptiert. Ihre generische Entsprechung, die generische List-Klasse, stellt eine Sort-Methode bereit, die eine Implementierung der generischen IComparer-Schnittstelle als Parameter akzeptiert.

  • Ist schnelles Suchen und Abrufen von Informationen erforderlich?

    • ListDictionary ist bei kleinen Auflistungen (mit höchstens 10 Elementen) schneller als Hashtable. Bei der generischen SortedDictionary-Klasse werden Suchvorgänge schneller als bei der generischen Dictionary-Klasse ausgeführt.
  • Werden Auflistungen gebraucht, die nur Zeichenfolgen annehmen?

    • StringCollection (basierend auf IList) und StringDictionary (basierend auf IDictionary) befinden sich im System.Collections.Specialized-Namespace.

    • Außerdem können Sie jede der generischen Auflistungsklassen im System.Collections.Generic-Namespace als stark typisierte Zeichenfolgenauflistungen verwenden, indem Sie die String-Klasse für ihre generischen Typargumente angeben.

Siehe auch

Referenz

System.Collections
System.Collections.Specialized
System.Collections.Generic

Weitere Ressourcen

Erstellen und Verändern von Auflistungen