En C # par exemple, les tableaux ont la propriété Length. Mais d'autres types de collection comme les listes, etc. ont la propriété Count. Y a-t-il une raison pour laquelle ces deux sont différents? Si oui, j'aimerais savoir.
c#
programming-languages
history
collections
Arunster
la source
la source
Réponses:
Ils sont nommés différemment car sémantiquement ils sont très différents:
Le nombre d'une collection est le nombre d'éléments actuellement stockés dans celle-ci et peut potentiellement changer au fil du temps.
La longueur d'un tableau est le nombre maximal d'éléments qu'il peut contenir (il aura une longueur de 10 même si vous n'y avez pas stocké autant d'éléments) et est immuable.
Exemple:
Si j'ai un seau qui peut contenir un maximum de 100 balles, il a une longueur de 100. Si j'y mets 50 balles, il a un compte de 50.
Si j'ajoute 10 balles de plus, le compte devient 60 mais la longueur est toujours de 100. Pour changer la longueur, j'ai besoin d'obtenir un seau différent.
Array utilise probablement le mot Longueur car sous le capot, il alloue un bloc contigu (une longueur) de mémoire en fonction de la capacité multipliée par la taille de l'élément. Bien que le fait que la classe List utilise "Capacité" pour un concept similaire (bien que modifiable) suggère que tableau peut utiliser le mot "Longueur" pour des raisons historiques.
la source
T[]
avec une longueur de N stocke toujours exactement N valeurs de typeT
. Sémantiquement, toutes ces valeurs peuvent ne pas être significatives (elles peuvent l'êtrenull
par exemple), mais elles existent. Ceci est différent du sens habituel de capacité (tel qu'utilisé parList<T>
exemple). Vous avez raison, celaCount
peut changer alors queLength
vous ne le pouvez pas. Là encore, rien n'obligeCount
à changer, en fait. Il est également utilisé pour les collections immuables.count
propriété.