【发布时间】:2013-06-23 17:23:34
【问题描述】:
我很好奇 C# 编译器会如何处理下面的两个语句:
String text = "abcdefghijklmnopqrstuvwxyz";
text = text.Substring( 0, 15 );
text = text + "...";
对比
String text = "abcdefghijklmnopqrstuvwxyz";
text = text.Substring( 0, 15 ) + "...";
结果当然是一样的,但是在第二次设置中,连接操作符是否更好地优化了代码?
在这两种情况下,您最终会为堆栈上的字符串分配 4 次,还是第二种情况只分配 3 次?
只是我在阅读一些代码时遇到的一个随机问题。
【问题讨论】:
-
否;它们完全相同。
-
如果您想了解有关字符串连接的更多信息,Eric Lippert 刚刚在他的博客 String concatenation behind the scenes, part one 和 two 上开始了一个新系列
-
据我所知,与
+运算符的字符串连接被转换为string.Concat()调用。如果你有很多,只需使用StringBuilder类。
标签: c# .net clr compiler-optimization string-concatenation