字符串连接的效率问题。

csz_1987 2010-03-09 04:50:41
string str1 = "abc";
string str2 = "def";

方法1: string str3 = str1+str2;
方法2: string str3 = string.Format("{0}{1}",str1,str2);


是不是方法2的效率高于方法1么?
...全文
170 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lijunfeng 2010-03-10
  • 打赏
  • 举报
回复
To tuyile006
我绝对不是胡扯,我是考虑了一下才敢写的
不过自己确实水平有限,如果有写的不对的地方请指出来,大家一起学习嘛。
phommy 2010-03-09
  • 打赏
  • 举报
回复
无循环时少量连接时用+和stringBuilder区别不大,比如此例

string.Format就不建议用了,虽然内部是用StringBuilder实现的,但解析字符串的花费太大。只是不在循环中不需要考虑
我姓区不姓区 2010-03-09
  • 打赏
  • 举报
回复
别人说得再多,都不如你自己动手测试一下来得直观与深刻
十八道胡同 2010-03-09
  • 打赏
  • 举报
回复
还是用Stringbuilder 吧
kwork 2010-03-09
  • 打赏
  • 举报
回复
用StringBuilder来延字符串,效率更好,不过如果你不是搞个几千个字符串加来加去的,就不用这么费事了。因为效率的差别,你体现不出来,不相信,自己用两个方法搞个循环自己测试下。问之前,完全可以自己测试一下效果的。
vrhero 2010-03-09
  • 打赏
  • 举报
回复
少量字符串连接效率最高的是string.Concat方法,大量字符串应该用StringBuilder...string.Format方法也是用StringBuilder,所以理论上比+更好...

但就两个字符串来说,几种方法几乎没有效率差异,都可以忽略不计...
SQL77 2010-03-09
  • 打赏
  • 举报
回复
StringBuilder

效率比较好
小y的CSDN博客 2010-03-09
  • 打赏
  • 举报
回复
引用 2 楼 lijunfeng 的回复:
区别应该不大吧
不过
string str1 = "abc";
string str2 = "def";
StringBuilder str3 = new StringBuilder();
str3.Append(str1);
str3.Append(str2);
肯定比以上两个方法快


你绝对是胡扯!
RYAN--333 2010-03-09
  • 打赏
  • 举报
回复
引用 2 楼 lijunfeng 的回复:
区别应该不大吧
不过
string str1 = "abc";
string str2 = "def";
StringBuilder str3 = new StringBuilder();
str3.Append(str1);
str3.Append(str2);
肯定比以上两个方法快

csz_1987 2010-03-09
  • 打赏
  • 举报
回复
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类对 '+'运算符的重载要从哪里看?
Jason-Jin 2010-03-09
  • 打赏
  • 举报
回复
第一个是字符串的连接,分配新的空间,第二个是格式化输入,也同样分配控件,没什么区别

使用 StringBuilder 类可以提升性能。

oysoft 2010-03-09
  • 打赏
  • 举报
回复
没有可比性吧,都是分配新字符空间,先后填入两个字符串
qqzeng-ip 2010-03-09
  • 打赏
  • 举报
回复
stringBuilder比string更节约内存,所以stringBuilder更快

String 对象是不可改变的。每次使用 System.String 类中的方法之一或进行运算时(如赋值、拼接等)时,都要

在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。而 StringBuilder 则不会。在需要对字

符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不

创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时

,使用 StringBuilder 类可以提升性能。
lijunfeng 2010-03-09
  • 打赏
  • 举报
回复
区别应该不大吧
不过
string str1 = "abc";
string str2 = "def";
StringBuilder str3 = new StringBuilder();
str3.Append(str1);
str3.Append(str2);
肯定比以上两个方法快
qqzeng-ip 2010-03-09
  • 打赏
  • 举报
回复
两者没有什么效率上的不同 后者只是字符串格式化

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧