程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c# 字符串連接使用“+”和string.format格式化兩種方式,

c# 字符串連接使用“+”和string.format格式化兩種方式,

編輯:C#入門知識

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 也不太方便。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved