StringBuilder

 

以下引用 在 .NET 中使用 StringBuilder 類別 文章就是對 StringBuilder 最好的說明

String 物件不可變。 每次您使用 System.String 類別的其中一個方法時,

就會在記憶體中建立新的字串物件,這需要為該新物件配置新的空間。

在您需要重複修改字串的情況下,與建立新 String 物件相關聯的額外負荷可能成本高昂。

當您想要修改字串,而不建立新物件時,可以使用 System.Text.StringBuilder 類別。

例如,在迴圈中將許多字串串連在一起時,可以使用 StringBuilder 類別來提升效能。

雖然 StringBuilder 是一個動態物件,可讓您擴充其封裝之字串中的字元數,

但您可以指定它能容納的字元數上限值。 這個值稱為物件的容量,

不應該與目前 StringBuilder 保存的字串長度混淆。

例如,您可以用字串 "Hello" 建立 StringBuilder 類別的新執行個體,其長度為 5,

而您可能會將物件的最大容量指定為 25。 當您修改 StringBuilder 時,

在到達容量上限之前,它不會重新配置自己的大小。 發生這種情況時,會自動配置新的空間,而且容量加倍。


如果你在字串的操作上考量到效能的話,就可以參考使用 StringBuilder,

否則用 string 足矣,因為 StringBuilder 和 string 所提供的方法都很雷同,沒有多大的差異。

以下列出範例作參考

using System;
using System.Text;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            StringBuilder StringBuilder = new StringBuilder("My");
            string aString = "My";
            Console.WriteLine(StringBuilder.ToString());
            Console.WriteLine(aString);
            Console.WriteLine();

            StringBuilder.Append(" wife");
            aString = aString + " wife";
            Console.WriteLine(StringBuilder.ToString());
            Console.WriteLine(aString);
            Console.WriteLine();

            StringBuilder.Insert(2, " sweety");
            aString = aString.Insert(2, " sweety");
            Console.WriteLine(StringBuilder.ToString());
            Console.WriteLine(aString);
            Console.WriteLine();

            StringBuilder.Replace("wife", "daughter");
            aString = aString.Replace("wife", "daughter");
            Console.WriteLine(StringBuilder.ToString());
            Console.WriteLine(aString);
            Console.WriteLine();

            Console.ReadKey();
        }
    }
}

 

參考資料:

StringBuilder Class