string str1 = "abc";
string str2 = "def";方法1: string str3 = str1+str2;
方法2: string str3 = string.Format("{0}{1}",str1,str2);
是不是方法2的效率高于方法1么?

解决方案 »

  1.   

    区别应该不大吧
    不过
    string str1 = "abc";
    string str2 = "def";
    StringBuilder str3 = new StringBuilder();
    str3.Append(str1);
    str3.Append(str2);
    肯定比以上两个方法快
      

  2.   

    stringBuilder比string更节约内存,所以stringBuilder更快 String 对象是不可改变的。每次使用 System.String 类中的方法之一或进行运算时(如赋值、拼接等)时,都要 在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。而 StringBuilder 则不会。在需要对字 符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不 创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时 ,使用 StringBuilder 类可以提升性能。 
      

  3.   

    第一个是字符串的连接,分配新的空间,第二个是格式化输入,也同样分配控件,没什么区别使用 StringBuilder 类可以提升性能。 
      

  4.   

    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();
    }
    这是 reflector的 system.string 的Format 静态方法
    可以看出,Format方法试用了StringBuilder类。我想知道String类对 '+'运算符的重载要从哪里看?
     
      

  5.   

    少量字符串连接效率最高的是string.Concat方法,大量字符串应该用StringBuilder...string.Format方法也是用StringBuilder,所以理论上比+更好...但就两个字符串来说,几种方法几乎没有效率差异,都可以忽略不计...
      

  6.   

    用StringBuilder来延字符串,效率更好,不过如果你不是搞个几千个字符串加来加去的,就不用这么费事了。因为效率的差别,你体现不出来,不相信,自己用两个方法搞个循环自己测试下。问之前,完全可以自己测试一下效果的。
      

  7.   

    无循环时少量连接时用+和stringBuilder区别不大,比如此例string.Format就不建议用了,虽然内部是用StringBuilder实现的,但解析字符串的花费太大。只是不在循环中不需要考虑
      

  8.   

    To tuyile006
    我绝对不是胡扯,我是考虑了一下才敢写的
    不过自己确实水平有限,如果有写的不对的地方请指出来,大家一起学习嘛。