Sobes.tech
Junior

Was ist der Unterschied zwischen ArrayList und List in C#?

sobes.tech KI

Antwort von AI

Die Unterschiede zwischen ArrayList und List in C# sind wie folgt:

  • Typisierung:

    • ArrayList speichert Elemente vom Typ object (nicht typisierte Sammlung), was eine Typumwandlung beim Zugriff auf Elemente erfordert und die Typsicherheit verringert.
    • List<T> ist eine generische Sammlung (T — ein definierter Typ), die Elemente eines bestimmten Typs speichert, die Typsicherheit gewährleistet und die Notwendigkeit der Typumwandlung eliminiert.
  • Leistung:

    • Das Hinzufügen und Abrufen von Elementen in ArrayList kann langsamer sein, da Boxing und Unboxing von Werttypen erforderlich sind.
    • List<T> ist in der Regel schneller, insbesondere für Werttypen, da kein Boxing/Unboxing erfolgt.
  • Typsicherheit:

    • ArrayList kann Elemente verschiedener Typen enthalten, was zu Laufzeitfehlern führen kann.
    • List<T> bietet Typsicherheit zur Compile-Zeit.
  • Implementierung:

    • ArrayList befindet sich im Namespace System.Collections.
    • List<T> befindet sich im Namespace System.Collections.Generic.
  • Verwendung:

    • ArrayList gilt als veraltet und wird in neuem Code nicht empfohlen.
    • List<T> ist die bevorzugte Wahl für die meisten Szenarien.

Beispiel:

// Verwendung von ArrayList
System.Collections.ArrayList arrayList = new System.Collections.ArrayList();
arrayList.Add(1);       // int wird in object verpackt
arrayList.Add("Zeichenkette"); // string wird als object gespeichert

int zahl = (int)arrayList[0]; // Typumwandlung erforderlich

// Verwendung von List<T>
System.Collections.Generic.List<int> list = new System.Collections.Generic.List<int>();
list.Add(1); // fügt int hinzu

// int zahl = list[0]; // keine Typumwandlung erforderlich

Vergleichstabelle:

Merkmal ArrayList List<T>
Typisierung Nicht typisiert (object) Generisch (T)
Leistung Mögliche Boxing/Unboxing Höher, kein Boxing/Unboxing für Werttypen
Typsicherheit Niedrig Hoch (zur Compile-Zeit)
Namensraum System.Collections System.Collections.Generic
Empfehlung Nicht empfohlen Empfohlen