In C # per esempio, le matrici hanno la proprietà Lunghezza. Ma altri tipi di raccolta come elenchi, ecc. Hanno la proprietà Count. C'è un motivo per cui questi due sono diversi? In tal caso, vorrei saperlo.
In C # per esempio, le matrici hanno la proprietà Lunghezza. Ma altri tipi di raccolta come elenchi, ecc. Hanno la proprietà Count. C'è un motivo per cui questi due sono diversi? In tal caso, vorrei saperlo.
Risposte:
Sono chiamati in modo diverso perché semanticamente sono abbastanza diversi:
Il conteggio di una raccolta è il numero di elementi attualmente memorizzati al suo interno e può potenzialmente cambiare nel tempo.
La lunghezza di un array è il numero massimo di elementi che può contenere (avrà una lunghezza di 10 anche se non ne hai memorizzati molti) ed è immutabile.
Esempio:
Se ho un secchio che può contenere un massimo di 100 palline ha una lunghezza di 100. Se ci metto 50 palline, ha un conteggio di 50.
Se aggiungo altre 10 palline il Conte diventa 60 ma la Lunghezza è ancora 100. Per cambiare la Lunghezza ho bisogno di ottenere un altro bucket.
L'array probabilmente usa la parola Lunghezza perché sotto il cofano sta allocando un blocco contiguo (una lunghezza) di memoria basato sulla capacità moltiplicata per la dimensione dell'oggetto. Sebbene il fatto che la classe List utilizzi "Capacità" per un concetto simile (sebbene mutabile) suggerisce che array può usare la parola "Lunghezza" per ragioni storiche.
T[]
con una lunghezza di N memorizza sempre esattamente N valori di tipo T
. Semanticamente, non tutti questi valori possono essere significativi (potrebbero essere null
per esempio), ma esistono. Questo è diverso dal solito significato di capacità (come usato List<T>
per esempio). Hai ragione che Count
può cambiare mentre Length
no. D'altra parte, nulla ha bisogno di Count
cambiare. È anche usato per collezioni immutabili.
count
proprietà.