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

GG2*_*G24 0 c# nullable

我正在尝试声明一个十进制数,如果 dr["index"] 为空,它将采用 dr["index"] 的值或值为 null。

这是我的代码行:

Decimal number = (Decimal)(dr["index"] ?? 0);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

System.Invalid.CastException : 'Specified cast is not valid' 
Run Code Online (Sandbox Code Playgroud)

你知道如何解决这个问题吗?

Mir*_*ndt 5

如果是 DBNull.Value,我会选择:

Convert.ToDecimal(dr["index"] == DBNull.Value ? 0m : dr["index"])
Run Code Online (Sandbox Code Playgroud)

或在空值的情况下:

Convert.ToDecimal(dr["index"] ?? 0m)
Run Code Online (Sandbox Code Playgroud)

ifdr[index]只能是一个数值。