表示可變字符字符串。無法繼承此類。
此類表示值為可變字符序列的類似字符串的對象。之所以說值是可變的,是因為在通過追加、移除、替換或插入字符而創建它後可以對它進行修改。有關比較,請參見 String 類。
大多數修改此類的實例的方法都返回對同一實例的引用。由於返回的是對實例的引用,因此可以調用該引用的方法或屬性。如果想要編寫將連續操作依次連接起來的單個語句,這將很方便。
StringBuilder 的容量是實例在任何給定時間可存儲的最大字符數,並且大於或等於實例值的字符串表示形式的長度。容量可通過 Capacity 屬性或 EnsureCapacity 方法來增加或減少,但它不能小於 Length 屬性的值。
如果在初始化 StringBuilder 的實例時沒有指定容量或最大容量,則使用特定於實現的默認值。
Concat 和 AppendFormat 方法都將新數據串連到一個現有的 String 或 StringBuilder 對象。String 對象串聯操作總是用現有字符串和新數據創建新的對象。StringBuilder 對象維護一個緩沖區,以便容納新數據的串聯。如果有足夠的空間,新數據將被追加到緩沖區的末尾;否則,將分配一個新的、更大的緩沖區,原始緩沖區中的數據被復制到新的緩沖區,然後將新數據追加到新的緩沖區。
String 或 StringBuilder 對象的串聯操作的性能取決於內存分配的發生頻率。String 串聯操作每次都分配內存,而 StringBuilder 串聯操作僅當 StringBuilder 對象緩沖區太小而無法容納新數據時才分配內存。因此,如果串聯固定數量的 String 對象,則 String 類更適合串聯操作。這種情況下,編譯器甚至會將各個串聯操作組合到一個操作中。如果串聯任意數量的字符串,則 StringBuilder 對象更適合串聯操作;例如,某個循環對用戶輸入的任意數量的字符串進行串聯。
給實現者的說明 此實現的默認容量是 16,默認的最大容量是 Int32.MaxValue。 當實例值增大時,StringBuilder 可按存儲字符的需要分配更多的內存,同時對容量進行相應的調整。分配的內存量是特定於實現的,而且如果所需內存量大於最大容量,會引發 ArgumentOutOfRangeException。 例如,Append、AppendFormat、EnsureCapacity、Insert 和 Replace 方法能增大實例的值。 通過 Chars 屬性可以訪問 StringBuilder 的值中的單個字符。索引位置從零開始。
來源自MSDN
——————————————————分割線————————————————————————
在對大量的字符串進行拼接操作的時候,StringBuilder的性能會比string中的‘+’要高一些,實現的結果是一樣的。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace demo { class Program { static void Main(string[] args) { StringBuilder str1 = new StringBuilder(); string str2 = "Test message "; str1.Append("Test"); str1.Append(" message"); Console.WriteLine("This is str1 :"+str1); Console.WriteLine("This is str2 :"+str2); Console.ReadKey(); } } }
append方法可以對其對象進行字符串的拼接, appendline可以對拼接後的字符串換行。