2012-01-04 23 views

答えて

15

0が暗黙的オブジェクト(箱入り)に変換されるint型であり、そしてあなたが短いに直接箱入りint型のVHS版はできませんので。これは動作します:

short s = (short)(int)(nullObj ?? 0); 

AはT箱入り(Tはもちろん、非null許容値型である)のみT又はT?にアンボックス化されてもよいです。

+2

[表現とアイデンティティ](http://blogs.msdn.com/b/ericlippert/archive/2009/03/19/representation-and-identity.aspxは)すなわち、なぜこのISN(説明します唯一のキャストで自動的に行われません)。 – Brian

5

最後の行にヌル合体演算子の結果は、箱入りintあります。あなたはそれをshortにunboxしようとしています。これは実行時にあなたが示した方法では失敗します。

あなたは、このやったようにです:nullで合体演算子の存在がここに赤いニシンのビットです

object x = 0; 
short s = (short) x; 

を。これが必要な理由

+2

赤いニシンを指摘するための+1。 – phoog

関連する問題