StringBuilder в C#
StringBuilder в C#: зачем нужен, как им пользоваться и когда обычный string лучше.
StringBuilder — изменяемый буфер символов из пространства имён
System.Text. Он позволяет собирать строку кусками без создания промежуточных объектов, что особенно важно в циклах.
Проблема с + в цикле
Каждый + создаёт новую строку. При 10 000 итерациях это 10 000 ненужных объектов в памяти:
// Медленно при большом N:
string result = "";
for (int i = 0; i < 5; i++)
result += i + " ";
Console.WriteLine(result);
Вывод:
0 1 2 3 4
StringBuilder — правильный способ
using System.Text;
var sb = new StringBuilder();
for (int i = 0; i < 5; i++)
sb.Append(i).Append(' ');
Console.WriteLine(sb.ToString());
Вывод:
0 1 2 3 4
StringBuilder меняет внутренний буфер на месте — никаких промежуточных строк.
Основные методы
Метод | Что делает |
| добавить в конец |
| добавить строку + перевод строки |
| вставить в позицию |
| удалить символы |
| заменить подстроку |
| получить готовую строку |
| текущая длина содержимого |
using System.Text;
var sb = new StringBuilder("Привет");
sb.Append(", мир");
sb.Insert(0, ">> ");
sb.Replace("мир", "C#");
Console.WriteLine(sb.ToString());
Console.WriteLine($"Длина: {sb.Length}");
Вывод:
>> Привет, C# Длина: 12
Когда что выбрать
Ситуация | Выбор |
Несколько склеиваний вне цикла |
|
Сборка строки в цикле (10+ итераций) |
|
Форматированный вывод |
|
Коротко
StringBuilderхранит символы в изменяемом буфере — не создаёт лишних объектов при каждой операции.- Подключается через
using System.Text. - Основные методы:
Append,AppendLine,Insert,Remove,Replace,ToString. - Используйте
StringBuilderвсегда, когда собираете строку в цикле.