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.
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.
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.
T[]
avec une longueur de N stocke toujours exactement N valeurs de type T
. Sémantiquement, toutes ces valeurs peuvent ne pas être significatives (elles peuvent l'être null
par exemple), mais elles existent. Ceci est différent du sens habituel de capacité (tel qu'utilisé par List<T>
exemple). Vous avez raison, cela Count
peut changer alors que Length
vous ne le pouvez pas. Là encore, rien n'oblige Count
à changer, en fait. Il est également utilisé pour les collections immuables.
count
propriété.