<p>Il est rare, en realite, que vous souhaitiez utiliser un tableau. Utilisez definitivement un <code>List<T></code> 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 <strong>tres specifique</strong> (apres benchmark), alors un tableau peut etre utile.</p>
<p><code>List<T></code> offre <em>beaucoup</em> 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 <code>params</code>, bien sur. ;-p</p>
<p>En contrepartie - <code>List<T></code> est unidimensionnel ; tandis que vous pouvez avoir des tableaux rectangulaires (etc.) comme <code>int[,]</code> ou <code>string[,,]</code> - mais il existe d’autres facons de modeliser ces donnees (si necessaire) dans un modele objet.</p>
<p>Voir aussi :</p>
<ul>
<li>
<p><a href="https://stackoverflow.com/questions/75976/how-when-to-abandon-the-use-of-arrays-in-c-net">Comment/Quand abandonner l’utilisation des tableaux en c#.net ?</a></p>
</li>
<li>
<p><a href="https://stackoverflow.com/questions/392397/arrays-whats-the-point">Les tableaux, a quoi bon ?</a></p>
</li>
</ul>
<p>Cela dit, nous utilisons <strong>beaucoup</strong> les tableaux dans notre projet <a href="https://github.com/mgravell/protobuf-net">protobuf-net</a> ; entierement pour des raisons de performance :</p>
<ul>
<li>
<p>il effectue beaucoup de decalages de bits, donc un <code>byte[]</code> est pratiquement essentiel pour l’encodage ;</p>
</li>
<li>
<p>nous utilisons un tampon local roulant <code>byte[]</code> que nous remplissons avant de l’envoyer au flux sous-jacent (et vice-versa) ; plus rapide que <code>BufferedStream</code> etc. ;</p>
</li>
<li>
<p>il utilise en interne un modele base sur des tableaux d’objets (<code>Foo[]</code> plutot que <code>List<Foo></code>), car la taille est fixe une fois construit, et doit etre tres rapide.</p>
</li>
</ul>
<p>Mais c’est definitivement une exception ; pour le traitement metier courant, un <code>List<T></code> l’emporte a chaque fois.</p>