众所周知,字符串是隐式实例化的,这意味着我们不必使用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
为您提供对文字字符串的引用根据文档 http://msdn.microsoft.com/en-us/library/system.reflection.emit.opcodes.ldstr.aspx(请记住,默认情况下文字字符串会被保留,因此它们仅创建一次)。第一条语句创建一个常规实例string
使用newobj
指令如预期。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)