c# 字符串銜接運用“+”和string.format格式化兩種方式。本站提示廣大學習愛好者:(c# 字符串銜接運用“+”和string.format格式化兩種方式)文章只能為提供參考,不一定能成為您想要的結果。以下是c# 字符串銜接運用“+”和string.format格式化兩種方式正文
參考文章:http://www.liangshunet.com/ca/201303/218815742.htm
字符串之間的銜接常用的兩種是:“+”銜接、string.format格式化銜接、StringBuilder 銜接
1.什麼時分運用“+”銜接呢?
待銜接的字符串在6個以下,可以運用 + 銜接
運用 + 銜接最終會調用 String.Concat 辦法,當同時銜接幾個字符串時,並不是每銜接一個都分配一次內存,而是把幾個字符都作為 String.Concat 辦法的參數,只分配一次內存,如:
string s = s1 + s2 + s3 + s4 + s5;
最終會被編譯為:string.Concat(s1, s2, s3, s4, s5);
經測試,當待銜接的字符串在6個以下時,運用 + 銜接,效率略高於 StringBuilder
2、何時運用 StringBuilder假如待銜接字符串在6個以上,運用 StringBuilder 比擬適宜。
StringBuilder 只分配一次內存,假如第二次銜接內存缺乏,則修正內存大小;它每次默許分配16字節,假如內存缺乏,則擴展到32字節,假如依然缺乏,持續成倍擴展。
運用 StringBuilder 的關鍵是分配好內存,假如頻繁的擴展內存,效率大打折扣,由於分配內存,時間開支絕對比擬大。
假如事前能精確估量順序執行進程中所需求的內存,從而一次分配足內存,效率大大進步。假如不能精確估量,也要盡量增加內存的分配次數。
3、字符格式(string.format)
string.format 辦法,其實最終是調用 StringBuilder,原型如下:
public static string Format(IFormatProvider provider, string format, params object[] args) { if ((format == null) || (args == null)) { throw new ArgumentNullException((format == null) ? "format" : "args"); } StringBuilder builder = new StringBuilder(format.Length + (args.Length * 8)); builder.AppendFormat(provider, format, args); return builder.ToString(); }
假如在待銜接字符串比擬少的狀況下,並沒有什麼效率上的差異,在 StringBuilder 和 string.format 之間可以依據方便性或習氣自在選擇。假如銜接的字符串很多, StringBuilder 的效率自然要高,並且運用 string.format 也不太方便。