我对使用StringBuilder
类有点困惑,首先:
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();
}
为什么我不应该直接用
+=
Edit:好的,我现在知道如何重用StringBuilder
的一个实例(仍然不知道这是否适用于代码标准),但这不值得仅用于一个string
,不是吗?