多用用StringBuilder吧

2021-03-31 18:28:27 字數 666 閱讀 8585

如果要操作乙個不斷增長的字串,請你不要再用string類了。為什麼涕淌要這樣說呢?我們來看看兩個類的工作原理。

string類是一種傳統的修改字串的方式,它確實可以完成把乙個字串新增到另乙個字串上的工作沒錯。但是在.***框架下,這個操作實在是划不來。因為系統先是把兩個字串寫入記憶體,接著刪除原來的string物件,然後建立乙個string物件,並讀取記憶體中的資料賦給該物件。這一來二去的,耗了不少時間。

當然,一般情況下你是覺察不出這二者效率的差異的,但如果你要對某個字串進行大量的新增操作,那麼用stringbuilder類所耗費的時間和string類簡直不是乙個數量級的。下面是乙個例子,你自己試一試:

imports system

imports system.text

namespace stringbuildersample

class clsstrbuilder

shared sub main()

dim i as integer

dim starttime as datetime

dim stoptime as datetime

'用string類來連線字串

'用stringbuilder類來連線字串

end class

end namespace

string系列 StringBuilder實現

借助c 原始碼中stringbuilder的的實現,在c 中實現乙個stringbuilder類。非常簡單,關鍵在實現字串的連線上,直接上 stringbuilder關鍵的實現在於解決多次字串操作後的記憶體碎片問題,下面的 只是乙個玩具,記憶體增長方式可以自定義,這裡我使用的是二倍增長,你也可以4倍...

JDK原始碼解析 StringBuilder

stringbuilder和stringbuffer一樣,都是繼承自抽象類abstractstringbuilder類,也是乙個可變的字串行。stringbuilder和stringbuffer非常相似,甚至有互相相容的api,不過,stringbuilder不是執行緒安全的,這是和stringbu...

字串操作》動態串StringBuilder

動態串stringbuilder 動態串stringbuilder的長度可在執行期間動態地改變。可以為 stringbuilder指定一定的長度,如果容量超出指定長度限制,stringbuilder會申請更多空間。動態串stringbuilder 設定stringbuilder容量 using sy...