关于string对象初始化的效率问题。

dangdang2471 2009-06-17 11:23:27
一个string对象由许多子串组成。那么初始化的时候第三种方法的效率会比前两种高吗?


第一种方法:
string str="aaa";
str += str1;
str += "bbb";
str += str2;
str += "ccc";
str += str3;

第二种方法:
string str="aaa"+str1+"bbb"+str2+"ccc"+str3;

第三种方法:
string str=string.Format("aaa{0}bbb{1}ccc{2}",str1,str2,str3);
...全文
76 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zenowolf 2009-06-17
  • 打赏
  • 举报
回复
如果是字符串相加,推荐用StringBulid~
jianshao810 2009-06-17
  • 打赏
  • 举报
回复
用StringBuilder
yuangang1011 2009-06-17
  • 打赏
  • 举报
回复
楼上正解
gomoku 2009-06-17
  • 打赏
  • 举报
回复
绝大部分情况下运行效率不是问题,是否容易阅读和理解更重要。

对运行效率有特殊要求的情况下,我倾向于认为第3种方法最慢(没测试)。
理由是第3种方法要对格式字符串进行搜索和分析,找出所有的占位符(那些{0} {1}...)。
然后判断对应的对象是否支持IFormatter并进行相应的格式化,最后才是合并。

而第1种和2种方法则比较简单,编译成string.Concat(string, string, string, string)等运行起来相对简洁和有效。
jiyan1221 2009-06-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 dangdang2471 的帖子:]
一个string对象由许多子串组成。那么初始化的时候第三种方法的效率会比前两种高吗?


第一种方法:
string str="aaa";
str += str1;
str += "bbb";
str += str2;
str += "ccc";
str += str3;

第二种方法:
string str="aaa"+str1+"bbb"+str2+"ccc"+str3;

第三种方法:
string str=string.Format("aaa{0}bbb{1}ccc{2}",str1,str2,str3);
[/Quote]
建议LZ去看一下关于string和stringbuilder的比较。这三种方法对string而言效率都很低,用stringbuilder的效率会高很多。
lucky749 2009-06-17
  • 打赏
  • 举报
回复
StringBuilder比较高
cailee 2009-06-17
  • 打赏
  • 举报
回复
用StringBuilder
play_boy007 2009-06-17
  • 打赏
  • 举报
回复
StringBuilder 连接字符串要比 string + string 这样的形式效率要高得多
lchy110 2009-06-17
  • 打赏
  • 举报
回复
楼主可以自己去找下StringBuilder 和string的区别就知道StringBuilder的优点了。。
幸运的意外 2009-06-17
  • 打赏
  • 举报
回复
三种方法都一样。效率不是最好的。如果子串的数据量多了,就不好了。最好是用StringBuilder对象的Appent方法来组装字符串。效率最高。
jy02870694 2009-06-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ghost5216 的回复:]
StringBulid 效率好些,看情况吧,如果不那么频繁,不那么长 用string就可以
[/Quote]
skyzero110 2009-06-17
  • 打赏
  • 举报
回复
StringBulid
ghost5216 2009-06-17
  • 打赏
  • 举报
回复
StringBulid 效率好些,看情况吧,如果不那么频繁,不那么长 用string就可以

111,098

社区成员

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

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

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