编译器在优化字符串连接方面有多聪明.

Hun*_*wis 0 .net c# clr string-concatenation compiler-optimization

我很好奇C#编译器如何处理下面的两个语句:

String text = "abcdefghijklmnopqrstuvwxyz";
text = text.Substring( 0, 15 );
text = text + "...";
Run Code Online (Sandbox Code Playgroud)

String text = "abcdefghijklmnopqrstuvwxyz";
text = text.Substring( 0, 15 ) + "...";
Run Code Online (Sandbox Code Playgroud)

结果当然是一样的,但是连接运算符在第二次设置中是否更好地优化了代码?

在两种情况下,您最终都会为堆栈上的字符串分配4个分配,或者第二种情况只分配3个分配?

在阅读一些代码时,我只是一个随机的问题.

Eri*_*ert 10

首先,首先不在堆栈上分配字符串.字符串在堆上.

其次,两种情况都有四种分配.我很好奇你认为哪一个可能会消失.

巧合的是,这是我本周博客的主题.请阅读本文,了解有关此主题的更多信息.