程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> StringBuilder 類

StringBuilder 類

編輯:C#入門知識

表示可變字符字符串。無法繼承此類。

此類表示值為可變字符序列的類似字符串的對象。之所以說值是可變的,是因為在通過追加、移除、替換或插入字符而創建它後可以對它進行修改。有關比較,請參見 String 類。

大多數修改此類的實例的方法都返回對同一實例的引用。由於返回的是對實例的引用,因此可以調用該引用的方法或屬性。如果想要編寫將連續操作依次連接起來的單個語句,這將很方便。

StringBuilder 的容量是實例在任何給定時間可存儲的最大字符數,並且大於或等於實例值的字符串表示形式的長度。容量可通過 Capacity 屬性或 EnsureCapacity 方法來增加或減少,但它不能小於 Length 屬性的值。

如果在初始化 StringBuilder 的實例時沒有指定容量或最大容量,則使用特定於實現的默認值。

性能注意事項

Concat 和 AppendFormat 方法都將新數據串連到一個現有的 StringStringBuilder 對象。String 對象串聯操作總是用現有字符串和新數據創建新的對象。StringBuilder 對象維護一個緩沖區,以便容納新數據的串聯。如果有足夠的空間,新數據將被追加到緩沖區的末尾;否則,將分配一個新的、更大的緩沖區,原始緩沖區中的數據被復制到新的緩沖區,然後將新數據追加到新的緩沖區。

StringStringBuilder 對象的串聯操作的性能取決於內存分配的發生頻率。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可以對拼接後的字符串換行。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved