При выполнении объединения строк существующей строки в внутреннем пуле, вводится ли новая строка в внутренний пул или возвращается ссылка на существующую строку в внутреннем пуле? Согласно этой статье String.Concat и StringBuilder будут вставлять новые экземпляры строк в внутренний пул?
http://community.bartdesmet.net/blogs/bart/archive/2006/09/27/4472.aspx
Может ли кто-нибудь объяснить, как работает конкатенация с внутренним пулом?





Если вы создаете новые строки, они не будут автоматически помещаться в внутренний пул, если вы не объедините константы во время компиляции, и в этом случае компилятор создаст один результат строки и интернирует его как часть процесса JIT.
Вы можете узнать, интернирована ли строка, позвонив в String.IsInterned. Вызов вернет новую строку, которая является либо ссылкой на интернированную строку, равную строке, которая была передана в качестве аргумента, либо null, если строка не была интернирована.