Я немного запутался в использовании класса StringBuilder, сначала:
Операция конкатенации объектовA
stringвсегда создает новый объект из существующихstringи новых данных. ОбъектStringBuilderподдерживает буфер для размещения конкатенации новых данных. Новые данные добавляются в конец буфера, если комната доступна; в противном случае выделяется новый более крупный буфер, данные из исходного буфера копируются в новый буфер, затем новые данные добавляются в новый буфер.
Но где создать экземпляр StringBuilder, чтобы избежать создания нового из string? Это звучит как торговля "один на один".
static void Main(string[] args)
{
String foo = "123";
using (StringBuilder sb = new StringBuilder(foo)) // also sb isn't disposable, so there will be error
{
sb.Append("456");
foo = sb.ToString();
}
Console.WriteLine(foo);
Console.ReadKey();
}
Почему я не должен просто использовать
+=
Изменить: Хорошо, теперь я знаю, как повторно использовать один экземпляр StringBuilder (до сих пор не знаю, соответствует ли это стандартам кода), но это не стоит использовать с только один string, не так ли?