String.Concat、String.format和+之间有什么区别
本文关键字:String 什么 区别 之间 Concat format | 更新日期: 2023-09-27 18:24:32
之间的区别
- CCD_ 1
- CCD_ 2
+
运算符
无论是长串串串还是短串串串串,哪一个在每个条件下都更有效。
string.Concat
只是将字符串连接在一起。除了调用ToString
之外,它不提供任何转换,也不提供格式化等。
string.Format
是一个更丰富的,允许格式模式等
当您在C#源代码中使用+
运算符时,编译器会将其转换为对String.Concat
的调用——它不像在decimal
中那样是一个执行时间运算符。
所以这个:
string result = x + y + z;
被编译为:
string result = string.Concat(x, y, z);
就效率而言,显然调用String.Concat
0和使用+
是等价的。我通常预计这会比string.Format
更快,但在大多数情况下,差异可以忽略不计。您应该首先编写最清晰、最可维护的代码(这通常意味着使用string.Format
),然后只有当您有测试数据表明您需要来优化特定部分时才进行微优化,然后只有在您证明优化有帮助时才保留优化。
请注意,的一点优化可以产生巨大差异的一个领域是重复级联,通常在循环中。这个代码效率非常低:
string result = "";
foreach (var x in y)
{
// Do some processing...
string z = ...;
result += z;
}
这最终不得不在每次迭代中复制一个中间字符串。在这些情况下,要么使用StringBuilder
,要么使用LINQ查询来表示最终需要连接的项目,然后使用string.Join
或string.Concat
来执行连接。