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