Types collection ArrayList et List
Mise à jour : novembre 2007
Un objet ArrayList ou List<T> est une version sophistiquée d'un tableau. La classe ArrayList et la classe générique List<T> fournissent certaines fonctionnalités que l'on retrouve dans la plupart des classes System.Collections mais pas dans la classe Array. Par exemple :
La capacité d'un Array est fixe, tandis que la capacité d'un ArrayList ou d'un List<T> s'adapte automatiquement aux besoins. Si la valeur de la propriété Capacity est modifiée, la réallocation de mémoire et la copie des éléments sont exécutées automatiquement.
ArrayList et List<T> fournissent des méthodes pour ajouter, insérer ou supprimer une plage d'éléments. Dans Array, vous pouvez obtenir ou définir la valeur d'un seul élément à la fois.
La méthode Synchronized permet de créer facilement une version synchronisée de ArrayList. La classe Array laisse à l'utilisateur le soin d'implémenter la synchronisation.
ArrayList et List<T> fournissent des méthodes qui retournent à la collection des wrappers en lecture seule et de taille fixe, contrairement à Array.
Par ailleurs, Array offre une certaine flexibilité, ce qui n'est pas le cas de ArrayList et List<T>. Par exemple :
Vous pouvez définir la limite inférieure d'un Array, alors que celle d'un ArrayList ou d'un List<T> est toujours égale à zéro.
Un Array peut avoir plusieurs dimensions, alors qu'un ArrayList ou un List<T> est toujours limité à une seule dimension.
Un Array d'un type spécifique (autre que Object) offre des performances supérieures à celles d'un ArrayList, car les éléments de ArrayList sont de type Object ; par conséquent, les conversions boxing/unboxing se produisent généralement lors du stockage ou de l'extraction d'un type valeur. Toutefois, un List<T> peut avoir des performances semblables à celles d'un tableau du même type si aucune réallocation n'est requise ; c'est-à-dire, si la capacité initiale est une bonne approximation de la taille maximale de la liste.
Dans la plupart des situations qui appellent un tableau, il est possible d'utiliser à la place un ArrayList ou un List<T> ; ceux-ci sont plus faciles à utiliser et ont, en règle générale, des performances semblables à celles d'un tableau du même type.
Array se trouve dans l'espace de noms System ; ArrayList se trouve dans l'espace de noms System.Collections ; List<T> se trouve dans l'espace de noms System.Collections.Generic.