Array versus List<T> : Quand utiliser lequel ?

Array versus List : Quand utiliser lequel ?

Il est rare, en realite, que vous souhaitiez utiliser un tableau. Utilisez definitivement un List<T> chaque fois que vous voulez ajouter/supprimer des donnees, car le redimensionnement des tableaux est couteux. Si vous savez que les donnees sont de taille fixe, et que vous souhaitez micro-optimiser pour une raison tres specifique (apres benchmark), alors un tableau peut etre utile.

List<T> offre beaucoup plus de fonctionnalites qu’un tableau (bien que LINQ equilibre un peu les choses), et c’est presque toujours le bon choix. Sauf pour les arguments params, bien sur. ;-p

En contrepartie - List<T> est unidimensionnel ; tandis que vous pouvez avoir des tableaux rectangulaires (etc.) comme int[,] ou string[,,] - mais il existe d’autres facons de modeliser ces donnees (si necessaire) dans un modele objet.

Voir aussi :

Cela dit, nous utilisons beaucoup les tableaux dans notre projet protobuf-net ; entierement pour des raisons de performance :

  • il effectue beaucoup de decalages de bits, donc un byte[] est pratiquement essentiel pour l’encodage ;

  • nous utilisons un tampon local roulant byte[] que nous remplissons avant de l’envoyer au flux sous-jacent (et vice-versa) ; plus rapide que BufferedStream etc. ;

  • il utilise en interne un modele base sur des tableaux d’objets (Foo[] plutot que List<Foo>), car la taille est fixe une fois construit, et doit etre tres rapide.

Mais c’est definitivement une exception ; pour le traitement metier courant, un List<T> l’emporte a chaque fois.