string в .NET нельзя изменить. Любая конкатенация, замена или обрезка создаёт новый объект. Благодаря этому строки безопасно использовать из нескольких потоков, удобно хранить в качестве ключей словаря, а оператор == сравнивает их содержимое.
Но есть и цена: каждое изменение — это новая аллокация. Поэтому для сборки текста в циклах используют StringBuilder, а не +.
🔜 Ещё одна особенность — интернирование строк. CLR хранит пул уникальных строк, поэтому одинаковые строковые литералы обычно ссылаются на один объект. Строки, созданные во время выполнения программы, в этот пул автоматически не попадают, но их можно добавить через string.Intern().
StringBuilder помогает избежать лишних аллокаций, а интернирование стоит использовать только там, где действительно много повторяющихся строк.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
#il_люминатор