Verwenden von generischen AuflistungenWhen to Use Generic Collections

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.Using generic collections is generally recommended, because you gain the immediate benefit of type safety without having to derive from a base collection type and implement type-specific members. 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.Generic collection types also generally perform better than the corresponding nongeneric collection types (and better than types that are derived from nongeneric base collection types) when the collection elements are value types, because with generics there is no need to box the elements.

Für Programme, die auf .NET Framework 4.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.For programs that target the .NET Framework 4.NET Framework 4 or later, you should use the generic collection classes in the System.Collections.Concurrent namespace when multiple threads might be adding or removing items from the collection concurrently.

Die folgenden generischen Typen entsprechen vorhandenen Auflistungstypen:The following generic types correspond to existing collection types:

Zusätzliche TypenAdditional Types

Einige generische Auflistungstypen haben keine nicht generischen Entsprechungen.Several generic collection types do not have nongeneric counterparts. Hierzu gehören Folgende:They include the following:

LINQ to ObjectsLINQ 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.The LINQ to Objects feature enables you to use LINQ queries to access in-memory objects as long as the object type implements the System.Collections.IEnumerable or System.Collections.Generic.IEnumerable<T> interface. 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 queries provide a common pattern for accessing data; are typically more concise and readable than standard foreach loops; and provide filtering, ordering and grouping capabilities. LINQ-Abfragen können auch die Leistung verbessern.LINQ queries can also improve performance. Weitere Informationen finden Sie unter LINQ to Objects und Parallel LINQ (PLINQ).For more information, see LINQ to Objects and Parallel LINQ (PLINQ).

Zusätzliche FunktionenAdditional Functionality

Einige der generischen Typen besitzen Funktionen, die es in den nicht generischen Auflistungstypen nicht gibt.Some of the generic types have functionality that is not found in the nongeneric collection types. 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.For example, the List<T> class, which corresponds to the nongeneric ArrayList class, has a number of methods that accept generic delegates, such as the Predicate<T> delegate that allows you to specify methods for searching the list, the Action<T> delegate that represents methods that act on each element of the list, and the Converter<TInput,TOutput> delegate that lets you define conversions between types.

Mit der List<T> -Klasse können Sie Ihre eigenen generischen IComparer<T> -Schnittstellenimplementierungen zum Sortieren und Durchsuchen der Liste angeben.The List<T> class allows you to specify your own IComparer<T> generic interface implementations for sorting and searching the list. Die Klassen SortedDictionary<TKey,TValue> und SortedList<TKey,TValue> verfügen ebenfalls über diese Funktion.The SortedDictionary<TKey,TValue> and SortedList<TKey,TValue> classes also have this capability. Darüber hinaus ermöglichen Ihnen diese Klassen das Angeben von Vergleichen beim Erstellen der Auflistung.In addition, these classes let you specify comparers when the collection is created. In ähnlicher Weise können Sie mit den Klassen Dictionary<TKey,TValue> und KeyedCollection<TKey,TItem> eigene Gleichheitsvergleiche angeben.In similar fashion, the Dictionary<TKey,TValue> and KeyedCollection<TKey,TItem> classes let you specify your own equality comparers.

Siehe auchSee Also

Sammlungen und DatenstrukturenCollections and Data Structures
Häufig verwendete AuflistungstypenCommonly Used Collection Types
GenerikaGenerics