1001 * Q1-ли C # (. NET) имеют ту же концепцию струнный пул в Java?
Ответ: нет, ̶ Использование строк C # ̶, непохожее строковое БАССЕЙН̶I̶n̶ ̶j̶a̶v̶a̶, каждая строка является собственной ссылкой;
Исправление : мне пришлось исследовать это для Java ... Это концептуально то же самое, я ошибался в деталяхпула строк Javas
C # обычно называет его интернированием строк
Подробнее об этом можно прочитать здесь: Fabulous Adventures In Coding : Блог Эрика Липперта Бывший блог
String interning и String.Empty
Если у вас два одинаковых строковых литералав одном модуле компиляции генерируемый нами код гарантирует, что CLR создаст только один строковый объект для всех экземпляров этого литерала в пределах assembly.Эта оптимизация называется «интернирование строк».
Интернирование строк - это функция интерфейса командной строки, которая повторно использует экземпляр строки в определенных ситуациях:
string
литералы, созданные с помощьюldstr
IL команда - При явном вызове с использованием
string.Intern
Q2 - сколько строковых объектов создано?
Поскольку строки в C # являются неизменяемыми, вы получаете 3 выделения строк из ваших 2 операторов
// 1st string
string str = "My name is";
// 2nd string
// "John"
// 3rd string, which is the concatenation of the first 2
str += "John"