Конкатенация строк C # и интернирование строк

StackOverflow https://stackoverflow.com/questions/38010

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

Кто-нибудь может объяснить, как работает конкатенация с внутренним пулом?

Это было полезно?

Решение

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top