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

2021-08-20 21:50:03 字數 1084 閱讀 8062

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

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

1 簡單 「+=」 拼接法

string str="a";

str+="c"+"d";

string str_1="a"+"b";

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

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

2 string.format()

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

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

public static string format(iformatprovider provider, string format, params object args) 

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

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

stringbuilder str=new stringbuilder();

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

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

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

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

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

refer 開發過程中常用到的拼接字串的方法有三種 1 簡單 拼接法 1 2 3 4 5 stringstr a str c d stringstr 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物件來儲...