En C #, por ejemplo, las matrices tienen la propiedad Longitud. Pero otros tipos de colecciones como listas, etc. tienen la propiedad Count. ¿Hay alguna razón por la cual estos dos son diferentes? Si es así, me gustaría saberlo.
c#
programming-languages
history
collections
Arunster
fuente
fuente
Respuestas:
Se nombran de manera diferente porque semánticamente son bastante diferentes:
El recuento de una colección es el número de elementos almacenados actualmente en él y puede cambiar con el tiempo.
La longitud de una matriz es el número máximo de elementos que puede contener (tendrá una longitud de 10 incluso si no ha almacenado tantos elementos en ella) y es inmutable.
Ejemplo:
Si tengo un cubo que puede caber en un máximo de 100 bolas, tiene una longitud de 100. Si pongo 50 bolas en él, entonces tiene una cuenta de 50.
Si agrego 10 bolas más, el conteo se convierte en 60 pero la longitud sigue siendo 100. Para cambiar la longitud, necesito obtener un cubo diferente.
La matriz probablemente usa la palabra Longitud porque debajo del capó está asignando un bloque contiguo (una longitud) de memoria en función de la capacidad multiplicada por el tamaño del elemento. Aunque el hecho de que la clase Lista use "Capacidad" para un concepto similar (aunque mutable) sugiere que la matriz puede usar la palabra "Longitud" por razones históricas.
fuente
T[]
con una longitud de N siempre almacena exactamente N valores de tipoT
. Semánticamente, no todos esos valores pueden ser significativos (pueden ser,null
por ejemplo), pero existen. Esto es diferente del significado habitual de capacidad (como se usa porList<T>
ejemplo). Tienes razón, esoCount
puede cambiar mientrasLength
que no puede. Por otra parte, nada exige queCount
, de hecho, cambie. También se utiliza para colecciones inmutables.count
propiedad.