C#中字符串优化String.Intern、IsInterned详解

2019-12-30 18:42:46王冬梅

实际上,如果你将”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查看,会看到:

string.intern,方法,c,字符串
Screenshot - ILDasm intern-xyz Main method.png

看到了吧,编译器足够聪明,将”x“+"y"+"z"替换为”xyz“。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对ASPKU的支持。

 
注:相关教程知识阅读请移步到c#教程频道。