Après quelques observations, vous pouvez avoir une meilleure idée du nombre total d'éléments dans cette liste. Ensuite, vous pouvez créer une nouvelle liste avec une capacité initiale dans le constructeur:
List<double> l = new List<double>(capacity);
Autre que cela, il est la bonne technique et de la structure des données.
MISE À JOUR:
Si vous:
- besoin que des
Add
et ToArray
fonctions de la structure List<T>
,
- Et vous ne pouvez pas vraiment prédire la capacité totale
- Et vous vous retrouvez avec plus de 1K éléments
- et une meilleure performance est vraiment vraiment (vraiment!) Votre objectif
Ensuite, vous pouvez écrire votre propre interface:
public interface IArrayBuilder<T>
{
void Add(T item);
T[] ToArray();
}
Et puis écrire votre propre implémentation, ce qui pourrait être mieux que List<T>
. Pourquoi donc? car List<T>
contient un seul tableau en interne et augmente sa taille lorsque cela est nécessaire. La procédure d'augmentation de la matrice interne coûte, en termes de performance, puisqu'elle alloue de la nouvelle mémoire (et peut-être copie les éléments de l'ancien tableau vers le nouveau, je ne m'en souviens pas). Cependant, si toutes les conditions décrites ci-dessus sont vraies, tout ce dont vous avez besoin est de construire un tableau, vous n'avez pas vraiment besoin que toutes les données soient stockées dans un seul tableau en interne.
Je sais qu'il est un long shot, mais je pense qu'il vaut mieux le partage de telles pensées ...
Je sais que cette question est ancienne, et je peux me tromper à ce sujet, mais il me semble que l'OP posait des questions à propos de l'instruction 'l.ToArray();', comme je l'ai également demandé.S'il doit créer une toute nouvelle structure de données, puis copier toutes les données et détruire l'original, ce n'est en fait pas si efficace. Il serait significativement plus efficace de retourner la 'Liste' ou tout autre type de données qui n'a pas besoin d'être copié et converti. –