Sobes.tech
Junior

Quelle est la différence entre ArrayList et List en C#?

sobes.tech IA

Réponse de l'IA

Les différences entre ArrayList et List en C# sont les suivantes :

  • Typage :

    • ArrayList stocke des éléments de type object (collection non typée), ce qui nécessite une conversion de type lors de l'extraction des éléments et réduit la sécurité de type.
    • List<T> est une collection générique (T — un type défini), qui stocke des éléments d'un type spécifique, garantissant la sécurité de type et éliminant le besoin de conversion.
  • Performance :

    • Ajouter et extraire des éléments dans ArrayList peut être plus lent en raison de la nécessité de boxing et unboxing des types valeur.
    • List<T> est généralement plus rapide, surtout pour les types valeur, car il n'y a pas de boxing/unboxing.
  • Sécurité de type :

    • ArrayList peut contenir des éléments de types différents, ce qui peut entraîner des erreurs à l'exécution.
    • List<T> offre une sécurité de type à la compilation.
  • Implémentation :

    • ArrayList se trouve dans l'espace de noms System.Collections.
    • List<T> se trouve dans l'espace de noms System.Collections.Generic.
  • Utilisation :

    • ArrayList est considéré comme obsolète et n'est pas recommandé pour le nouveau code.
    • List<T> est le choix préféré pour la plupart des scénarios.

Exemple d'utilisation :

// Utilisation de ArrayList
System.Collections.ArrayList arrayList = new System.Collections.ArrayList();
arrayList.Add(1);       // int emballé dans object
arrayList.Add("chaîne"); // string stocké comme object

int nombre = (int)arrayList[0]; // Conversion de type requise

// Utilisation de List<T>
System.Collections.Generic.List<int> list = new System.Collections.Generic.List<int>();
list.Add(1); // Ajoute un int

// int nombre = list[0]; // Pas besoin de conversion de type

Tableau comparatif :

Caractéristique ArrayList List<T>
Typage Non typé (object) Générique (T)
Performance Possible boxing/unboxing Plus élevé, pas de boxing/unboxing pour types valeur
Sécurité de type Faible Élevée (au moment de la compilation)
Espace de noms System.Collections System.Collections.Generic
Recommandation Non recommandé Recommandé