Dlaczego nie mogę rozpakować int jako dziesiętnego?

mamIDataRecord reader pobieram liczbę dziesiętną w następujący sposób:

decimal d = (decimal)reader[0];

Z jakiegoś powodu powoduje to niepoprawny wyjątek rzutowania, który mówi, że „Określony rzut jest nieprawidłowy”.

Kiedy robięreader[0].GetType() mówi mi, że to Int32. O ile mi wiadomo, nie powinno to stanowić problemu ....

Przetestowałem to przez ten fragment kodu, który działa dobrze.

int i = 3750;
decimal d = (decimal)i;

To sprawiło, że drapałem się po głowie, zastanawiając się, dlaczego nie można rozpakować int zawartego w czytniku jako dziesiętnego.

Czy ktoś wie, dlaczego tak się dzieje? Czy brakuje mi czegoś subtelnego?

questionAnswers(4)

yourAnswerToTheQuestion