String和StringBulider的區別

2022-02-26 19:24:32 字數 909 閱讀 1836

今天分析petshop的時候,遇到stringbulider,對這個概念比較模糊,下面結合msdn和自己對兩者的理解說下

大家都知道string物件是不可變的,它有固定長度,每次使用它的時候,我們都要從記憶體中重新分配空間給他,如果我們重複修改它,那麼記憶體開銷是比較大的

比如 string x= "" ;

x = "a" + "b" + "c"  ;

最後x的值為"abc",其實這個x已經不是原來的那個x,記憶體已經為它重新分配了空間

如果我們要修改字串而不建立新的物件,則可以使用 。例如,當在乙個迴圈中將許多字串連線在一起時,使用stringbuilder類可以提公升效能。

雖然stringbuilder物件是動態物件,允許擴充它所封裝的字串中字元的數量,但是您可以為它可容納的最大字元數指定乙個值。此值稱為該物件的容量,不應將它與當前stringbuilder物件容納的字串長度混淆在一起。例如,可以建立stringbuilder類的帶有字串「hello」(長度為 5)的乙個新例項,同時可以指定該物件的最大容量為 25。當修改stringbuilder時,在達到容量之前,它不會為其自己重新分配空間。當達到容量時,將自動分配新的空間且容量翻倍。可以使用過載的建構函式之一來指定stringbuilder類的容量。下面的示例指定可以將 mystringbuilder 物件擴充到最大 25 個空白。

比如:stringbuilder mystringbuilder = new stringbuilder("hello world!", 25); 

我們也可以通過屬性來設定物件的最大長度

比如:mystringbuilder.capacity = 25;

String和string的區別

msdn中對string的說明 string is an alias for string in the net framework。string是string的別名而已,string是c 中的類,string是framework的類,c string 對映為 framework的 string。如...

String和string的區別

最近老看見有人在論壇上問string和string有什麼區別,答案五花八門差點兒沒讓我背過氣去,乾脆放到blog上來,論壇上就貼位址了 首先,在一般情況下,string和string是一樣的,但是他們也存在如下區別 1 string始終代表 system.string 1.x 或 system.st...

String和string的區別

msdn中對string的說明 string is an alias for string in the net framework。string是string的別名而已,string是c 中的類,string是framework的類,c string對映為framework的string。如果用s...