In primo luogo, si noti che le stringhe in .NET sono molto diverse dalle stringhe memorizzate in linguaggi non gestiti (come C++) ... Nel CLR, la lunghezza della stringa (in caratteri e in byte) viene infatti memorizzata in memoria in modo che il CLR sappia quanto è grande il blocco di memoria (matrice di caratteri) che contiene la stringa. Questo viene fatto al momento della creazione della stringa e non viene modificato dato che il tipo System.String
è immutabile.
In C++ questo è piuttosto diverso, poiché la lunghezza di una stringa viene rilevata leggendo fino al primo carattere nullo. A causa del modo in cui l'utilizzo della memoria funziona nel CLR, si può essenzialmente considerare che ottenere la proprietà Length
di una stringa è come recuperare una variabile int
. Il costo delle prestazioni qui sarà assolutamente minimo, se è quello che stai considerando.
Se vuoi saperne di più sulle stringhe in .NET, prova con Jon Skeet's article sull'argomento: sembra che abbia tutti i dettagli che potresti voler sapere sulle stringhe in .NET.
Non è "pre-calcolato" tanto quanto la proprietà Length per la classe String immutabile restituisce semplicemente la proprietà Length per la struttura dati sottostante. –
V'è in realtà un numero non memorizzato (nella struttura dati sottostante) che rappresenta la lunghezza della stringa, e il numero esiste come il risultato di un calcolo. Indipendentemente dal fatto che tu abbia mai usato la proprietà Length, quel numero viene sempre calcolato e sempre archiviato nella struttura dati sottostante. Questo è ciò che intendo per "pre-calcolato". – tylerl