首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串-“”+ vs“”{}

字符串-“”+ vs“”{}
EN

Stack Overflow用户
提问于 2014-07-08 05:33:54
回答 3查看 10.6K关注 0票数 2

写下面两个有什么不同吗?代码是针对C#的

代码语言:javascript
复制
String S1 = "The " + Item.Name + " is made of " + Item.Property + " and is at " + Item.Durability + "% durability."

反对

代码语言:javascript
复制
String S2 = "The {0} is made of {1} and is at {2} % durability.", Item.Name, Item.Property, Item.Durability

?假设该项目填充了,例如,Axe的名称,钢的属性,以及作为字符串的50的持久性。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-08 05:37:37

第二个更快,假设您在String.Format中正确使用了它。

在第一种方法中,您在内部强制系统按顺序构建一个更大的字符串,从而为每个+操作触发至少一个完全分配和内部复制。

在第二种方法中,您让内部优化的函数首先评估所有参数,并分配单个字符串来一次性包含整个最终结果,然后将其复制进来。

票数 2
EN

Stack Overflow用户

发布于 2014-07-08 05:36:34

是的,第二个给你一个单独的字符串,因为你的代码是worng的,你必须使用string.Format方法,所以它比第一个有更好的性能。

代码语言:javascript
复制
String S2 = string.Format("The {0} is made of {1} and is at {2} % durability.", Item.Name, Item.Property, Item.Durability);

第一个方法将生成大量字符串,并在+运算符之间进行连接操作。

如果你在一个循环中有一个连接,推荐使用StringBuilder类。

看看这篇文章:Most efficient way to concatenate strings?

票数 1
EN

Stack Overflow用户

发布于 2014-07-08 05:36:49

假设您将第二个示例更正为使用String.Format,它们应该会产生完全相同的结果。

我个人更喜欢使用String.Format,因为它给了我更多的控制权。此外,我一直认为它可能更有效,尽管我没有做任何测试来验证这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24620255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档