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 queBufferedStreametc. ; -
il utilise en interne un modele base sur des tableaux d’objets (
Foo[]plutot queList<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.