C 拼接字串的幾種方式和效能

2021-07-31 21:38:49 字數 1686 閱讀 7564

refer 

開發過程中常用到的拼接字串的方法有三種:

1 簡單 「+=」 拼接法

1

2

3

4

5

stringstr="a";

str+="c"+"d";

stringstr_1="a"+"b";

首先需要明白的是string型別,string是引用型別,保留在堆上,而不是棧上,用的時候傳的是記憶體中的位址,每次修改就會重新建立乙個新的string物件來儲存字串,原有的會被自動**。

第一種方式的實現原理,第一步先在記憶體中分配空間,儲存str變數的物件,值為"a", 「+=」時,又會重新建立乙個物件來儲存新的字串(「abc"),把str指向這個新的位址。所以只有簡單幾步的拼寫時,一般不會有太大問題,如果有時候需要迴圈拼接時,就會不斷建立新的物件,很浪費效能和記憶體。

2 string.format()

1

stringstr= string.format("","a","b","c");

這就需要先看看他的源**了,

1

2

3

4

5

6

7

publicstaticstring format(iformatprovider provider, string format,paramsobject args)

可以看到是先建立乙個stringbuilder型別的變數,長度為第乙個引數的長度+引數長度的8倍。.net自動分配乙個比較大的容量來儲存。stringbuilder的介紹請看第3種方法.

這種方式的**看起來比較整潔,易於月度,效率也比+=高效很多。

1

2

3

stringbuilder str=newstringbuilder();

"a");

stringbuilder 是預先建立乙個比較大的記憶體,以後每次操作時判斷容量上限是否不夠用,如果不夠用就自動把容量擴大一倍,修改的還是第一次建立的物件的值。

如果是簡單的拼寫時,可以用 "+=", string.format

迴圈內拼寫很長的字串時,就需要用到stringbuilder來節省效能和記憶體了。

C 拼接字串的幾種方式和效能

c 拼接字串的幾種方式和效能 開發過程中常用到的拼接字串的方法有三種 1 簡單 拼接法 string str a str c d string str 1 a b 首先需要明白的是string型別,string是引用型別,保留在堆上,而不是棧上,用的時候傳的是記憶體中的位址,每次修改就會重新建立乙個...

C 拼接字串的幾種方式和效能

開發過程中常用到的拼接字串的方法有三種 1 簡單 拼接法 stringstr a str c d stringstr 1 a b 首先需要明白的是string型別,string是引用型別,保留在堆上,而不是棧上,用的時候傳的是記憶體中的位址,每次修改就會重新建立乙個新的string物件來儲存字串,原...

C 拼接字串的幾種方式和效能

開發過程中常用到的拼接字串的方法有三種 1 簡單 拼接法12 345stringstr a str c d stringstr 1 a b 首先需要明白的是string型別,string是引用型別,保留在堆上,而不是棧上,用的時候傳的是記憶體中的位址,每次修改就會重新建立乙個新的string物件來儲...