实际上,如果你将”x“+"y"+"z"替换为String.Format("{0}{1}{2}",'x','y','z'),结果确实就不一样了。某种原因,CLR会将使用+运算符链接的字符串视为常量,而String.Format却需要在运行时才能知道结果。为什么?看一下下面的代码:
using System;
class Program {
public static void Main() {
Console.WriteLine("x" + "y" + "z");
}
}
这段代码编译之后,使用Ildasm.exe查看,会看到:

Screenshot - ILDasm intern-xyz Main method.png
看到了吧,编译器足够聪明,将”x“+"y"+"z"替换为”xyz“。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对ASPKU的支持。
注:相关教程知识阅读请移步到c#教程频道。










