Concatenação de strings C# e internação de strings
Pergunta
Ao realizar a concatenação de strings de uma string existente no pool de estagiários, uma nova string é inserida no pool de estagiários ou uma referência é retornada à string existente no pool de estagiários?De acordo com este artigo, String.Concat e StringBuilder irão inserir novas instâncias de string no pool interno?
http://community.bartdesmet.net/blogs/bart/archive/2006/09/27/4472.aspx
Alguém pode explicar como funciona a concatenação com o pool de estagiários?
Solução
Se você criar novas strings, elas não serão colocadas automaticamente no pool interno, a menos que você concatene constantes em tempo de compilação; nesse caso, o compilador criará um resultado de string e o internará como parte do processo JIT.
Outras dicas
Você pode ver se uma string foi internada chamando String.IsInterned
.A chamada retornará uma nova string que é uma referência a uma string interna igual à string que foi passada como argumento ou null
se a string não foi internada.