爲什麼C#編譯器只是簡單地調用默認的隱式無參數.ctor
而不是intobj
爲null
指定了可爲空的值類型?用IL中的Initobj操作碼初始化可空類型
假設我們有這樣的代碼:
Nullable<int> ex1 = new Nullable<int>();
Nullable<int> ex2 = null;
Nullable<int> ex3 = new Nullable<int>(10);
的IL輸出這兩條線路是這樣的:
它只能撥打.ctor
的最後一句話,爲什麼我們不能有兩個帶零字段的第一個語句的實例?
好吧,你說的很對,因爲我的圖片顯示如果有一個,它也會在IL中調用,但是,它調用'intobj'指令來初始化值類型,即使我說'new Nullable()' 。我正在將你的帖子標記爲答案。 –
Tarik