Назад к вопросам
Junior
71
questionbank
Какова вместимость класса StringBuilder?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Вместимость класса StringBuilder не ограничена фиксированным числом символов. При необходимости она автоматически увеличивается, выделяя больший объем памяти. Точный алгоритм увеличения зависит от реализации в конкретной версии .NET, но обычно это происходит удвоением текущей вместимости.
Начальная вместимость по умолчанию составляет 16 символов, но ее можно задать явно через конструктор.
Максимальная вместимость теоретически ограничена объемом доступной оперативной памяти и архитектурой системы (например, максимальный размер массива в .NET).
Методы, влияющие на вместимость:
Append(): Добавляет символы, при необходимости увеличивая вместимость.Insert(): Вставляет символы, при необходимости увеличивая вместимость.Remove(): Удаляет символы, не уменьшая вместимость.Capacity: Свойство для получения или установки текущей вместимости. УстановкаCapacityменьше текущей длины строки вызовет исключение.EnsureCapacity(int minimumCapacity): Увеличивает вместимость при необходимости до указанного минимума.
Пример:
// создаем StringBuilder с вместимостью по умолчанию (16)
StringBuilder sb1 = new StringBuilder();
// текущая вместимость = 16
Console.WriteLine($"Capacity 1: {sb1.Capacity}");
// создаем StringBuilder с начальной вместимостью 50
StringBuilder sb2 = new StringBuilder(50);
// текущая вместимость = 50
Console.WriteLine($"Capacity 2: {sb2.Capacity}");
// добавляем символы, превышающие начальную вместимость по умолчанию
for (int i = 0; i < 20; i++)
{
sb1.Append("a");
}
// вместимость увеличилась (например, до 32)
Console.WriteLine($"Capacity after append: {sb1.Capacity}");