Par défaut la Capacité de la Liste
Ce qui est la valeur par défaut de la capacité d'une Liste?
- En fonction de la capacité défaut est, à mon avis, un bug. Suffit d'utiliser le constructeur qui prend la capacité initiale comme paramètre, et vous connaissez sans aucun doute la capacité.
- Certainement pas un bug si vous le savez, la façon dont la Liste des<T> fonctionne, et c'est une forte probabilité que la liste est vide, ou contenir moins de 4 éléments.
- Basé sur Thorarin de réponse: dotnetfiddle.net/OoRIHl
- referencesource.microsoft.com/#mscorlib/system/collections/...
Vous devez vous connecter pour publier un commentaire.
Pourquoi ne pas simplement essayer?
Cette réponse permettra de travailler sur toutes les versions de .NET qui ont Liste. Sur ma version, il arrive à être 0.
En fait, il commence avec une Capacité de 0. Lorsque vous ajoutez le premier élément, la mise en œuvre actuelle alloue une capacité de 4. Après cela, la capacité continue à doubler si l'extension est nécessaire, pour garantir amorti O(1) opération.
Gardez à l'esprit que c'est le comportement actuel. Vous ne devriez pas compter sur elle pour être le cas. Cela devrait démontrer le comportement actuel:
Selon l'échantillon sur la MSDN constructeur sans paramètre de la documentation, la capacité initiale de la liste créée avec:
est de 0. Aussi loin que je peux dire, ce n'est pas documenté comme une garantie, ni la stratégie de redimensionnement documenté (c'est à dire qu'il peut actuellement double avec un minimum de 4, mais dans .NET 5.0, il pourrait triple avec un minimum de 128.) Vous ne devriez pas compter sur ce comportement, en fait.
Capacity
de la propriété.La valeur par défaut de la capacité de Liste de 4 éléments (après l'insertion d'un élément initial, sinon c'est de 0 taille)
Capacité devrait être utilisé si vous savez à peu près combien d'articles que vous souhaitez stocker dans la Liste (ou dans la Pile, ou la File d'attente).
Dans ce cas, vous pouvez éviter les problèmes de mémoire de la copie. La mémoire de la copie qui se passe, car sous le capot, les Listes Piles et Files d'attente) s'appuient sur le tableau pour stocker leurs articles. La taille de ce tableau est à vous de la capacité, mais ce n'est pas la même que la taille de la liste. Que la taille de la liste doit être plus grand que la taille du tableau, la Liste de mise en œuvre prévoit l'attribution d'une plus grande array (facteur de 2 peut-être moins) et copie tous les éléments de ancien tableau à un nouveau plus récemment ajouté des éléments.
Donc, si vous savez que vous pouvez avoir, par exemple, de 50 à 60 éléments de votre liste, créer une liste avec une capacité de 60 et pas de libération mémoire va se passer.
Note: Et il semble que le Garbage Collector n'aurez pas à nettoyer les anciens tableaux
Tout cela se trouve dans une ligne pour assurer la capacité est capable de stocker un autre élément:
Obtenu ce à partir de la mscorlib 4.0.0.0 deassebled - bien sûr, tant que Jon a dit, cela ne peut être garanti de ne pas changer dans l'avenir (pour l'instant il reste encore à 0, 4, 8, 16...).
Bien sûr, vous pouvez l'installer vous-même si cela peut être 3, 9, 27, etc.