私はSharepointで小さなコードを扱っていました。それは次のようになります:
int? do_ = (int?)re["mi"]; // consider "re" a dictionary<string, object>;
等号の右側の式は a に評価されDouble
ます。double
念のためdouble
、ウォッチウィンドウで確認しました(:D)。そして、ええ、それはSystem.Double
、インとアウトです。
ただし、その行は例外をスローします。
指定されたキャストは無効です。
はい、値の非整数部分を失いますが、doubleをintにキャストできることに気づきました(これは実際に私の場合に意図されています)。これは、世界が動き出す前のプログラミングの最初の日に学びました。
そこで、さらに確実にするために、別のソリューションである単純なコンソール アプリを作成しました。私はそれにこのコードを入れました:
double dragon = 2.0;
int? i = (int?)dragon;
そして、期待どおりに機能します。
ある設定では機能するのに、別の設定では失敗するのはなぜですか?