У меня есть IDataRecord reader
, что я извлечение из десятичного следующим образом:Почему я не могу распаковать int как десятичное число?
decimal d = (decimal)reader[0];
По какой-то причине это бросает недопустимое исключение произнесения говоря, что «Указанный бросок не является действительным.»
Когда я делаю reader[0].GetType()
, он сообщает мне, что это Int32. Насколько я знаю, это не должно быть проблемой.
Я проверил это с помощью этого фрагмента, который работает отлично.
int i = 3750;
decimal d = (decimal)i;
Это оставило меня чесать голову интересно, почему он не в состоянии распаковывать ИНТ, содержащийся в читателе как десятичное.
Кто-нибудь знает, почему это может произойти? Есть ли что-то тонкое, что мне не хватает?
В некотором смысле стыдно, что распаковка и литье синтаксически выглядят одинаково, поскольку они представляют собой очень разные операции. – jerryjvl
Thanks Mehrdad. Ваше объяснение и ссылка на блог Эрика были весьма полезными. – mezoid
Спасибо! Это бросило меня за петлю. – Darryl