众所周知,字符串是隐式实例化的,这意味着我们不必使用 new
来获取对对象的引用。
正因为如此,我一直相信框架会处理这个问题,因此如果我这样做,我会得到相同的 IL:
String first = new String(new char[] {'a'});
string second = "a";
但是第一行似乎是使用 newobj instance void [mscorlib]System.String::.ctor(char[])
完成的
和第二个 ldstr "a"
。
因此,为了获得字符串引用,ldstr
是否会在内部调用 newobj
?我在哪里可以看到支持它的规范/详细信息?
最佳答案
ldstr
为您提供对文字字符串的引用 per the documentation (记住文字字符串默认是驻留的,所以它们只创建一次)。第一条语句按预期使用 newobj
指令创建 string
的常规实例。
关于c# - ldstr 是否在内部实现了 newobj?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10111194/