開發過程中常用到的拼接字串的方法有三種:
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();
"a"
);
stringbuilder 是預先建立乙個比較大的記憶體,以後每次操作時判斷容量上限是否不夠用,如果不夠用就自動把容量擴大一倍,修改的還是第一次建立的物件的值。
如果是簡單的拼寫時,可以用 "+=", string.format
迴圈內拼寫很長的字串時,就需要用到stringbuilder來節省效能和記憶體了。
4 c# 中 $符號的用法 c# 6.0的、、、vs 2015支援
c#中$的用法:是為了替代string.format();原先賦值需要佔位符和變數,當需要拼接多個變數會造成語句過長等不易理解問題,$""是為了替代string.format(),可以把字串中的c#變數{}包含起來達到識別c#變數的目的$"";也支援表示式,使用$""
var k = "a";
var a0 = "user";
var a1 = "id";
var a2 = 5;
var ccc = string.format("select * from where = ", a0, a1, a2);
var ccb = $"select * from where =";
當然也支援string.format()裡面的格式,如:
var k = "a";
var k4 = $"";
var k3 = string.format("", k);
var k2 = datetime.now;
var c = $"";
c = string.format("", k2);
C 拼接字串的幾種方式和效能
refer 開發過程中常用到的拼接字串的方法有三種 1 簡單 拼接法 1 2 3 4 5 stringstr a str c d stringstr 1 a b 首先需要明白的是string型別,string是引用型別,保留在堆上,而不是棧上,用的時候傳的是記憶體中的位址,每次修改就會重新建立乙個新...
C 拼接字串的幾種方式和效能
c 拼接字串的幾種方式和效能 開發過程中常用到的拼接字串的方法有三種 1 簡單 拼接法 string str a str c d string str 1 a b 首先需要明白的是string型別,string是引用型別,保留在堆上,而不是棧上,用的時候傳的是記憶體中的位址,每次修改就會重新建立乙個...
C 拼接字串的幾種方式和效能
開發過程中常用到的拼接字串的方法有三種 1 簡單 拼接法12 345stringstr a str c d stringstr 1 a b 首先需要明白的是string型別,string是引用型別,保留在堆上,而不是棧上,用的時候傳的是記憶體中的位址,每次修改就會重新建立乙個新的string物件來儲...