8
我剛從一個讓我瘋狂的同事得到了這個測驗。對於這個代碼片段:可空類型GetType()拋出異常
var x = new Int32?();
string text = x.ToString(); // No exception
Console.WriteLine(text);
Type type = x.GetType(); // Bang!
爲什麼在第一部分的ToString()的工作沒有出現任何的異常,然後調用的GetType()拋出一個NullReferenceException?
好吧..但是,爲什麼然後用最後一行替換:var boxed =(Int32)x;拋出InvalidOperationException而不是?是不是拳擊,應該拋出同樣的例外? – kabaros
@kabaros:不,根本不是拳擊 - 「Int32?」和「Int32」都不是引用類型。這是C#4規範第6.2.3節中描述的明確轉換。 –
哦,當然,這是非常有道理的。非常感謝。順便說一句好書,所以你原諒我們瘋狂:) – kabaros