Я немного запутался в использовании класса 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
, не так ли?