6
我四处张望了一下,但一直没能找到一个答案,新的C#6.0编译如何分解为一些新的空传播命令,如下所示:空传播运营商
BaseType myObj = new DerivedType();
string myString = (myObj as DerivedType)?.DerivedSpecificProperty;
我想知道的是它如何处理这个问题。
它是否会将as
演员组缓存到新的DerivedType
变量中(即,这只是as
演员后面跟着空比较的语法糖)。
或者如果它实际上as
强制转换,请检查null,然后如果不是null,重铸并继续。
那么,没有。如果关闭C#反编译模式并只检查IL生成的内容,就会发现它不使用变量,它只是使用'dup'来复制堆栈中的值。 – hvd
@ hvd这是因为IL中唯一内置的引用类型是对象和字符串。 – phoog
@phoog我完全不知道你说的是什么意思。 – hvd