C 中String與StringBuild的區別

2021-10-07 04:21:23 字數 1472 閱讀 5531

首先,我們要明確,string是引用型別,一旦賦值,值是不可改變的。每次使用system.string類中的方法之一時,都要在記憶體中建立乙個新的字串物件,這就需要為該新物件分配新的空間。在需要對字串執行重複修改的情況下,與建立新的string物件相關的系統開銷可能會非常昂貴。如果要修改字串而不建立新的物件,則可以使用system.text.stringbuilder類。例如,當在乙個迴圈中將許多字串連線在一起時,使用stringbuilder類可以提公升效能。

string str=

"1234"

;string str1=

"5678"

;str=str+str1;

這時候str變成了"12345678"。

表面上看好像是字串"1234"變成了"12345678",其實不是的。

string是引用型別,一開始str引用了記憶體中"1234"的位址,執行str+str1的時候,實際上是在記憶體中重新生成了乙個"12345678"的string變數,而不是在原來的"1234"上增加一段,然後再把str的引用設定到新的"12345678"上。

而stringbuilder不同,它可以在原來的字串末尾加上新的字串。

1、string型別物件的特點它是引用型別,在堆上分配記憶體。

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

string 物件一旦生成不可改變(immutable)。

定義相等運算子(== 和 !=)是為了比較 string 物件的值(而不是引用)。

2、string,stringbuilder類之間關係:

stringbuilder繼承自abstractstringbuilder這個類,而abstractstringbuilder和string都繼承自object這個類(object是所有c#類的超類)。

3、string是不可變類,stringbuilder是可變類string本身是不可改變的,它只能賦值一次,每一次內容發生改變,都會生成乙個新的物件,然後原有的物件引用新的物件,而每一次生成新物件都會對系統效能產生影響,這會降低.net編譯器的工作效率。

stringbuilder類則不同,每次操作都是對自身物件進行操作,而不是生成新的物件,其所佔空間會隨著內容的增加而擴充,這樣,在做大量的修改操作時,不會因生成大量匿名物件而影響系統效能。

總結:string:適用於少量的字串操作,字串不經常發生變化的時,我們可以優先使用string

c 中string與String的區別

在c 中,string 是 system.string 的別名,所以基本上在使用時是沒有差別的。習慣上,我們把字串當作物件時 有值的物件實體 我們用string。而我們把它當類時 需要字串類中定義的方法 我們用string,比如 string greet string.format hello pl...

C 中String與string的區別分析

一 區別分析 string 類,system.string string 型別,變數 兩者本質上yfsyvbtck沒有任何區別,都是system.string,string只是system.string的別名而已 唯一的區別在於如何按照 約定的來寫,如宣告變數時使用小寫string,使用system...

C 中string和String的區別

string是string的別名。string是c 中的類,string是.net framework的類 在c ide中不會顯示藍色 c string對映為.net framework的string 如果用string,編譯器會把它編譯成string,所以如果直接用string就可以讓編譯器少做一...