指定的强制转换无效-十进制

时间:2019-07-04 08:10:49

标签: c# nullable

我正在尝试声明一个十进制数字,该数字将采用dr [“ index”]的值,或者如果dr [“ index”]为null则为null。

这是我的代码行:

Decimal number = (Decimal)(dr["index"] ?? 0);

我遇到以下错误:

System.Invalid.CastException : 'Specified cast is not valid' 

您知道如何解决该问题吗?

2 个答案:

答案 0 :(得分:4)

如果使用DBNull.Value,我会选择:

Convert.ToDecimal(dr["index"] == DBNull.Value ? 0m : dr["index"])

或如果为空值:

Convert.ToDecimal(dr["index"] ?? 0m)

如果dr[index]只能是数字值。

答案 1 :(得分:0)

我建议改用Decimal.TryParse

Decimal d = 0;
if(Decimal.TryParse(dr["index"].ToString(), out d)) {
// Do some stuff here...
}
else {
// Connot Parse, do some other stuff...
}