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

时间:2014-07-07 21:33:54

标签: c# string

写下两个之间有什么区别吗?代码适用于C#

String S1 = "The " + Item.Name + " is made of " + Item.Property + " and is at " + Item.Durability + "% durability."

针对

String S2 = "The {0} is made of {1} and is at {2} % durability.", Item.Name, Item.Property, Item.Durability

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

3 个答案:

答案 0 :(得分:2)

第二个更快,假设您正确使用String.Format

在第一种方法中,您在内部强制系统按顺序构建一个逐渐增大的字符串,至少为每个+操作触发完整分配和内部副本。

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

答案 1 :(得分:1)

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

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?

答案 2 :(得分:1)

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

我个人更喜欢使用String.Format,因为它让我更有控制力。此外,我一直认为它可能更有效率,虽然我没有进行任何测试来验证它。