我對使用StringBuilder
一流,有點糊塗:如何使用StringBuilder明智
一個
string
對象串聯操作總是創建從現有string
和新數據的新對象。 AStringBuilder
對象維護一個緩衝區以適應新數據的連接。如果空間可用,新數據將附加到緩衝區的末尾;否則,將分配一個新的更大的緩衝區,將原始緩衝區中的數據複製到新緩衝區中,然後將新數據附加到新緩衝區中。
但創建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
,不是嗎?
http://www.dotnetperls.com/stringbuilder-performance與http://www.dotnetperls.com/st ring-concat – Steve
@royB「字符串爭用本地使用stringbuilder(str1 + str2)」是什麼意思? String *連接*實際上*不*在內部使用StringBuilder。 –