string un tipo particolare

di Marco Leoncini, in c#,

settimane pese quelle trascorse passate a corre per chiudere un progetto e poi costretto a riaprirlo per correggere gli errori commessi a causa della fretta, non il massimo :) ma guardiamo oltre...

mi sono sempre chiesto cosa volesse dire che una stringa è immutabile, adesso ho la risposta (leggedo un libro quà un libro la)
la stringa è un tipo primitivo in c# e come tale, può essere dichiarato direttamente nel codice, quando il compilatore trova una stringa la inserisce nei metadati, un parte dell'assembli che contiene anche le descrizioni dei metodi ed è responsabile delle "magie" dell'intellisense.

prendiamo una semplice stringa letterale:

string s = "ciao"

il compilatore trovando il precedente codice provvede a inserirlo nella tabella nei metadati e successivamente a richiamarla al momento dell'esecuzione

Console.WriteLine(s);

stessa cosa succede se concateniamo stringhe letterali

string s = "ci" + "ao";

in fase di compilazione la stringa viene concatenate e nei metadati viene salvata solo una stringa "ciao"

ma che succede se la stringhe non sono letterali? ad esempio quando è un metodo di una classe a restituire una stringa, la concatenazione viene fatta in fase di esecuzione ( e non di compilazione) in questi casi e sconsigliabile concatenuare le stringhe utilizzando "+" in quanto crea più oggetti stringa nell heap della garbage collector al suo posto è consigliabile utilizzare uno StringBuilder...

inoltre ci sono particolari metodi pre ottimizzare le prestazioni delle stringhe specialmente quando vengono usate per dei confronti., magari ne parlo nella prossima bloggata :)

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese