2

次のコードは、InvalidCastException.

  object x = (short) 1;
  int y = (int) x;

ボックス化された値のタイプが不明であるため、x最初に aにキャストしてから にキャストできることはわかっていますが、それはオプションではありません (ただし、 a よりも明らかに小さいです)。shortintint

ボックス化されたタイプよりも大きいタイプにボックス化解除するときの例外を回避するにはどうすればよいですか?

編集:タイプ を使用して問題を解決しましたdynamic(すべてのパフォーマンスへの影響があります)

4

1 に答える 1

8

オブジェクトをその正確なタイプにのみボックス化解除できます。

代わりに、Convert.ToInt32()任意の数値型で機能する を呼び出す必要があります。

于 2012-11-21T23:27:20.200 に答える