2008-09-01 3 views
4

При выполнении строковой конкатенации существующей строки в станем пуле, является ли новая строка, введенная в внутренний пул, или является ссылкой, возвращаемой существующей строке в пуле? Согласно этой статье String.Concat и StringBuilder вставляют новые экземпляры строк в главный пул?Конкатенация строки C# и интернирование строк

http://community.bartdesmet.net/blogs/bart/archive/2006/09/27/4472.aspx

Может кто-нибудь объяснить, как конкатенация работает с стажера бассейном?

ответ

4

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

0

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

Смежные вопросы