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

2022-06-10 06:30:08 字數 2144 閱讀 5481

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

1 簡單 「+=」 拼接法12

345stringstr="a";

str+="c"+"d";

stringstr_1="a"+"b";

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

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

2 string.format()

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

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

3456

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

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

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

3stringbuilder str=newstringbuilder();

"a");

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

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

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

4 c# 中 $符號的用法   c# 6.0的、、、vs 2015支援

c#中$的用法:是為了替代string.format();原先賦值需要佔位符和變數,當需要拼接多個變數會造成語句過長等不易理解問題,$""是為了替代string.format(),可以把字串中的c#變數{}包含起來達到識別c#變數的目的$"";也支援表示式,使用$""

[csharp]view plain

copy

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()裡面的格式,如:

[csharp]view plain

copy

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 簡單 拼接法 stringstr a str c d stringstr 1 a b 首先需要明白的是string型別,string是引用型別,保留在堆上,而不是棧上,用的時候傳的是記憶體中的位址,每次修改就會重新建立乙個新的string物件來儲存字串,原...