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物件來儲...