StringBuilder — это класс в C#, предназначенный для эффективного построения и модификации строк. В отличие от обычных строк (string), которые являются неизменяемыми (immutable), StringBuilder позволяет изменять содержимое без создания новых объектов при каждой операции.
Что такое StringBuilder? Что внутри него? Как работает выделение памяти?
StringBuilder — это класс в C#, предназначенный для эффективного построения и модификации строк.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
StringBuilder — это класс в C#, предназначенный для эффективного построения и модификации строк. В отличие от обычных строк (string), которые являются неизменяемыми (immutable), StringBuilder позволяет изменять содержимое без создания новых объектов при каждой операции.
Внутри StringBuilder хранится массив символов (char[]), который изначально выделяется с некоторым запасом по длине. При добавлении новых символов или строк, если текущий массив не вмещает новые данные, происходит выделение нового массива большего размера, копирование старых данных и добавление новых.
Механизм выделения памяти обычно удваивает размер внутреннего буфера при переполнении, что снижает количество копирований и повышает производительность при множественных операциях конкатенации.
Пример:
var sb = new StringBuilder();
sb.Append("Hello");
sb.Append(" World");
string result = sb.ToString(); // "Hello World"
Таким образом, StringBuilder оптимален для сценариев с большим количеством изменений строк, где создание новых строк было бы дорогостоящим.