写下两个之间有什么区别吗?代码适用于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的持久性。
答案 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
类。
答案 2 :(得分:1)
假设您更正了第二个使用String.Format
的示例,它们应该产生完全相同的结果,是的。
我个人更喜欢使用String.Format
,因为它让我更有控制力。此外,我一直认为它可能更有效率,虽然我没有进行任何测试来验证它。