私はクレイジーな運転をしている同僚からこのクイズを受け取りました。このコードのスニペットの場合:Nullable型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