写下面两个有什么不同吗?代码是针对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?假设该项目填充了,例如,Axe的名称,钢的属性,以及作为字符串的50的持久性。
发布于 2014-07-08 05:37:37
第二个更快,假设您在String.Format中正确使用了它。
在第一种方法中,您在内部强制系统按顺序构建一个更大的字符串,从而为每个+操作触发至少一个完全分配和内部复制。
在第二种方法中,您让内部优化的函数首先评估所有参数,并分配单个字符串来一次性包含整个最终结果,然后将其复制进来。
发布于 2014-07-08 05:36:34
是的,第二个给你一个单独的字符串,因为你的代码是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类。
发布于 2014-07-08 05:36:49
假设您将第二个示例更正为使用String.Format,它们应该会产生完全相同的结果。
我个人更喜欢使用String.Format,因为它给了我更多的控制权。此外,我一直认为它可能更有效,尽管我没有做任何测试来验证这一点。
https://stackoverflow.com/questions/24620255
复制相似问题