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

 

转载于:https://www.cnblogs.com/dawenyang/p/6245471.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值