回覆列表
-
1 # Tiekt鐵鐵
-
2 # 使用者1118065681947
StringBuilder stringBuilder = new StringBuilder(30,300);
StringBuilder 類在初始化的時候,提供許多建構函式用來初始化當前例項的初始大小和可儲存的最大字元數以及用來初始化當前例項的字串。
實際上,當我們建立 StringBuilder 物件的時候,.NET 執行庫會為當前的物件在記憶體中分配一塊快取區域,用以對字串操作的預留空間。
在使用 StringBuilder 類的時候,最好將容量設定為字串可能的最大長度,確保 StringBuilder 不需要重複分配記憶體。
如果字元的容量超過設定的最大容量,.NET 執行庫將自動分配記憶體並翻倍。
對於我們 .NET 程式設計師而言,StringBuilder 與 String 的不同之處就在於,StringBuilder 可以顯示的設定分配記憶體的大小
Stringbuilder類是直接用於字串操作的類,打個比方把(1)string aa="123456";(2)aa+="789";(3)StringBuilder text=new StringBuilder("123456",12);(4)text.Append("789");如果你輸出aa,和text 你會發現他們的輸出內容是一樣的。但是aa的操作過程實際上是:首先在記憶體中分配一個地址空間,空間大小是6。然後執行 aa+="789";的操作,該過程是連線字串,“123456”和“789”並且在記憶體中重新分配地址。把aa 的記憶體地址指向 “123456789”的記憶體地址。也就是說在記憶體中實際上是有兩個空間北分配,第一的記憶體空間,在後來是由C#的垃圾處理機制來自動處理掉,如果我們用3 4 句的程式來實現這個過程,那麼他是沒有再次分配記憶體空間的,他就是在text的記憶體空間裡進行了操作。這裡要說明下StringBuilder在生命變數的過程中是可以我們自己來分配他的大小的,如果實際的內容超出記憶體空間,他會自動翻倍。透過上面的例子,我們可以知道 StringBuilder的優越性是在:第一:他不需要每次都去分配記憶體空間。所以系統就沒有必要去處理垃圾;第二:當我們需要多次的對一個字串進行多次操作的時候,他的效率要遠遠 高 與string 希望回答對你有幫助;