ArrayList-Auflistungstyp und List-Auflistungstyp
Aktualisiert: November 2007
Ein ArrayList-Objekt oder ein List<T>-Objekt stellt eine anspruchsvollere Version eines Arrays dar. Die ArrayList-Klasse und die generische List<T>-Klasse enthalten einige Features, die von den meisten System.Collections-Klassen, aber nicht von der Array-Klasse bereitgestellt werden. Beispiel:
Die Kapazität von Array ist festgelegt, während die Kapazität von ArrayList oder List<T> je nach Bedarf automatisch angepasst wird. Wenn der Wert der Capacity-Eigenschaft geändert wird, werden die Neuzuordnung des Speichers und das Kopieren der Elemente automatisch vorgenommen.
ArrayList und List<T> stellen Methoden zum Hinzufügen, Einfügen oder Entfernen vollständiger Elementbereiche bereit. Bei einem Array kann nur jeweils der Wert eines einzigen Elements zur gleichen Zeit abgerufen oder festgelegt werden.
Eine synchronisierte Version von ArrayList lässt sich mit der Synchronized-Methode leicht erstellen. Bei der Array-Klasse bleibt die Implementierung einer Synchronisierung den Benutzern überlassen.
ArrayList und List<T> stellen Methoden bereit, die Wrapper mit Schreibschutz und fester Größe an die Auflistung zurückgeben. Bei Array geschieht dies nicht.
Andererseits bietet Array eine Flexibilität, die ArrayList und List<T> nicht aufweisen. Beispiel:
Die untere Grenze von Array kann festgelegt werden, die von ArrayList oder List<T> ist jedoch immer 0 (null).
Array kann über mehrere Dimensionen verfügen, während ArrayList oder List<T> immer genau eine Dimension aufweisen.
Ein Array eines bestimmten Typs (außer Object) ist leistungsfähiger als ArrayList, da die Elemente von ArrayList den Typ Object aufweisen. Daher erfolgt beim Speichern oder Abrufen eines Werttyps normalerweise ein Boxing oder Unboxing. List<T> kann jedoch ein ähnliches Leistungsverhalten wie ein Array desselben Typs aufweisen, wenn keine Neuzuordnung erforderlich ist, d. h., wenn die Anfangskapazität annähernd der Maximalgröße der Liste entspricht.
In den meisten Situationen, in denen ein Array verwendet werden soll, können Sie stattdessen ArrayList oder List<T> verwenden, da sie benutzerfreundlicher sind und im Allgemeinen dieselbe Leistung wie ein Array desselben Typs erbringen.
Array befindet sich im System-Namespace. ArrayList befindet sich im System.Collections-Namespace. List<T> befindet sich im System.Collections.Generic-Namespace.