Concatenazione di stringhe e internamento di stringhe in C#
Domanda
Quando si esegue la concatenazione di stringhe di una stringa esistente nel pool interno, viene inserita una nuova stringa nel pool interno o viene restituito un riferimento alla stringa esistente nel pool interno?Secondo questo articolo, String.Concat e StringBuilder inseriranno nuove istanze di stringa nel pool interno?
http://community.bartdesmet.net/blogs/bart/archive/2006/09/27/4472.aspx
Qualcuno può spiegare come funziona la concatenazione con il pool di stagisti?
Soluzione
Se crei nuove stringhe, queste non verranno automaticamente inserite nel pool interno, a meno che non concateni le costanti in fase di compilazione, nel qual caso il compilatore creerà un risultato di stringa e lo internarà come parte del processo JIT.
Altri suggerimenti
Puoi vedere se una stringa è stata internata chiamando String.IsInterned
.La chiamata restituirà una nuova stringa che è un riferimento a una stringa interna uguale alla stringa passata come argomento oppure null
se la stringa non fosse internata.