web-dev-qa-db-fra.com

Pourquoi les tableaux sont-ils dans la longueur de .NET, mais d'autres types de collecte ont compté?

Dans C # Par exemple, des tableaux ont une propriété de longueur. Mais d'autres types de collecte comme des listes, etc. ont des biens compter. Y a-t-il une raison pour laquelle ces deux sont différents? Si oui j'aimerais savoir.

23
Arunster

Ils sont nommés différemment parce que sémantiquement ils sont assez différents:

Le nombre d'une collection est le nombre d'éléments actuellement stockés et peut potentiellement changer avec le temps.

La longueur d'une array est le nombre maximum d'articles qu'il peut contenir (il aura une longueur de 10 même si vous n'avez pas stocké que de nombreux articles de la part) et qui est immuable.

Exemple:

Si j'ai un seau pouvant correspondre à un maximum de 100 balles, il a une longueur de 100. Si je mets 50 balles dessus, il comporte alors un nombre de 50.

Si j'ajoute 10 boules supplémentaires, le nombre devient 60 mais la longueur est toujours 100. Pour changer la longueur, j'ai besoin d'obtenir un seau différent.

Le tableau utilise probablement la longueur de mot car sous la hotte, il alloue un bloc contigu (une longueur) de mémoire basée sur la capacité multipliée par la taille de l'article. Bien que la classe de liste utilise une "capacité" pour un concept similaire (bien que mutable) suggère que la matrice puisse utiliser le mot "longueur" pour des raisons historiques.

30
combinatorics