IDataRecord reader
次のように小数を取得していることがあります。
decimal d = (decimal)reader[0];
何らかの理由で、これは「指定されたキャストが無効です」という無効なキャスト例外をスローします。
私がそうするときreader[0].GetType()
、それはそれがInt32であることを私に告げます。私の知る限り、これは問題ではないはずです。
私はこれをこのスニペットでテストしましたが、これは問題なく機能します。
int i = 3750;
decimal d = (decimal)i;
これにより、リーダーに含まれるintを小数としてアンボックス化できないのはなぜかと頭を悩ませました。
なぜこれが起こっているのか誰かが知っていますか?私が見逃している微妙なものはありますか?