Verwenden von generischen Auflistungen

Das Verwenden von generischen Auflistungen wird generell empfohlen, da Sie den unmittelbaren Vorteil die Typsicherheit erhalten, ohne von einem Basisauflistungstyp abweichen und typenspezifische Member implementieren zu müssen. Generische Auflistungstypen bieten allgemein auch eine bessere Leistung als die entsprechenden nicht generischen Auflistungstypen (und besser als Typen, die von nicht generischen Basisauflistungstypen abgeleitet sind), wenn die Auflistungselemente Werttypen sind, da bei generischen Typen keine Notwendigkeit zum Einschließen der Elemente besteht.

Für Programme, die auf .NET Framework 4 oder höher abzielen, sollten Sie die generischen Auflistungsklassen im System.Collections.Concurrent -Namespace verwenden, wenn mehrere Threads möglicherweise Elemente gleichzeitig der Auflistung hinzufügen oder daraus entfernen.

Die folgenden generischen Typen entsprechen vorhandenen Auflistungstypen:

Zusätzliche Typen

Einige generische Auflistungstypen haben keine nicht generischen Entsprechungen. Hierzu gehören Folgende:

LINQ to Objects

Mit der LINQ to Objects-Funktion können Sie LINQ-Abfragen für den Zugriff auf Objekte im Arbeitsspeicher verwenden, solange der Objekttyp die System.Collections.IEnumerable - oder System.Collections.Generic.IEnumerable<T> -Schnittstelle 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 to Objects und Parallel LINQ (PLINQ).

Zusätzliche Funktionen

Einige der generischen Typen besitzen Funktionen, die es in den nicht generischen Auflistungstypen nicht gibt. Die List<T> -Klasse, die der nicht generischen ArrayList -Klasse entspricht, hat z. B. eine Reihe von Methoden, die generische Delegaten akzeptieren, z. B. den Predicate<T> -Delegaten, mit dem Sie Methoden zum Durchsuchen der Liste angeben können, den Action<T> -Delegaten, der Methoden für die einzelnen Listenelemente darstellt, und den Converter<TInput,TOutput> -Delegaten, mit dem Sie Konvertierungen zwischen Typen definieren können.

Mit der List<T> -Klasse können Sie Ihre eigenen generischen IComparer<T> -Schnittstellenimplementierungen zum Sortieren und Durchsuchen der Liste angeben. Die Klassen SortedDictionary<TKey,TValue> und SortedList<TKey,TValue> verfügen ebenfalls über diese Funktion. Darüber hinaus ermöglichen Ihnen diese Klassen das Angeben von Vergleichen beim Erstellen der Auflistung. In ähnlicher Weise können Sie mit den Klassen Dictionary<TKey,TValue> und KeyedCollection<TKey,TItem> eigene Gleichheitsvergleiche angeben.

Siehe auch

Auflistungen und Datenstrukturen
Häufig verwendete Auflistungstypen
Generika