C string和StringBuilder的區別

時間 2022-03-21 05:30:03

1樓:張張

string是一種特殊的引用型別,他在每一次的賦值都會在記憶體中建立一個新的對像來進行儲存,這就是為什麼每次你對string型別的變數進行操作後都要用一個新的變數來指向的原因,而stringbuilder則不是這樣,它一但new了之後,在記憶體中只有一個,相比,如果進行字串大量的加減操作的話,stringbuilder的效率要高很多

2樓:度木子木木

string:不可變的字串,如果要執行多個字串相加,效率較低,由於其機制是需要重新建立空間

stringbuilder:可變的字串,適用於多個字串組合在一起的情況,效率比string高,追加不需要重新建立空間

3樓:

string的缺點是每次字串變數的內容發生了改變時,都必須重新分配記憶體。你想想,如果建立一個迭代100000次的迴圈,每次迭代都將一個字元連線到字串,這樣記憶體中就會有100000個字串,每個字串僅僅與前一個字串相伴只是有一個字元不同,效能影響是很大的。

stringbuilder通過分配一個快取,就是一個工作區來解決這些問題,在工作區中隊字串應用stringbuilder類的相關方法。包括新增,刪除,移除,插入和替換字元等等。執行完之後,將呼叫tostring方法把工作區中的內容轉換為一個字串,方便賦給一個字串變數。

這樣stringbuilder會提升一些效能。

c#中的string與stringbuilder有什麼區別

4樓:zealot支點

stringbuilder是專門用於字串操作的類,效率比直接操作string高。

5樓:匿名使用者

如果有大量的字串拼接的操作最好用 stringbuilder

效能要比用 string 高很多

你可以寫個程式自己試試~比較一下!

6樓:華華兮

string類具有恆常性,即當a="345";當要修改a,比如要再增加a的長度或修改a的值時,a原來指向「345」,此時修改後,a重新指向新的字串,而非指向原來「345」的位置。

而stringbulider則可以對源字串進行修改,修改後,指向的是原來物件的位置。

c#string和stringbuilder的區別

7樓:

‍  string 具有的特點:

string是引用型別,在堆上分配記憶體。

string物件一旦生成,就不可以改變。

string提供了大量便捷的字串操作函式。

string運算時會產生一個新的例項。

在程式中定義相等運算子(== 和 !=),可以方便比較string物件的值(而不是引用)。

stringbuilder 具有的特點:

stringbuilder物件是動態物件,允許擴充它所封裝的字串中的字元數量。

stringbuilder可以用於修改stringbuilder中的內容。

注意:由於string物件一旦生成,就不可改變,所以每次使用string類中的方法時,都需要在記憶體中建立一個新的字串物件,這會分配新的空間給新的物件。如果對字串執行重複修改,建立一個新的string物件導致的系統開銷可能會非常昂貴。

如果不建立新的物件,只是修改字串,則可以使用stringbuilder類,stringbuilder型別可以很好地解決字串操作的效能問題,在它生成string物件之前,將不會產生任何string物件。

cstring類的比較,C string類的比較

問題是已經是string類了,你為什麼需要用strcmp去比較?這是把 c 的風格和c的風格混合再一起,不倫不類的。它確實有辦法做到,但是應該盡最大努力別這麼做 逸明鯨人 strcmp只能運用於陣列的比較 string類可以用成員函式compare 即a.compare b 例如string a 1...

C string陣列怎麼去掉重複項

集合 泛型,自然是linq最好用了 listmylist new list new string 直接 mylist.distinct 不就有了 using system using system.collections using system.collections.generic namesp...

cstring型別的變數中存放的是指向字串的指標

首先 指標的變數 字首 統一報錯,其次,想列印出地址對於非指標物件的變數統一使用 string 是字串,想訪問地址得用 或者也可以。樓主,還是複習下指標和變數吧。 斷的刃 string型別的變數中存放的是指向字串的指標,string s 12345 那s就是存放那個指標的,既然s存放了那個指標,那麼...