在C#中从DB.Null转换为十进制的任何方式

pri*_*kar 2 c#

有没有办法在C#中从DB.Null转换为十进制?

喜欢

Object[] returnvalue = new Object[1];
returnvalue[0] = null;
returnvalue[0] = Convert.ToDecimal(returnvalue[returnvalue.Length - 1]);
Run Code Online (Sandbox Code Playgroud)

虽然CLR说DBNull.Value不能被类型化.我还想知道那里

任何工作?提前致谢

Mat*_*ley 7

你怎么期望投射null任何东西?它是空的,没什么,虚无...

这就是说,你最好的选择将是检查DBNull(或者null在上述情况下),并使用/返回/不管default(decimal)代替,但nullDBNull都有从仅仅是一种默认值的显著语义差别; 他们没有价值,所以这可能不是你想做的.


Mar*_*ell 6

DBNull和之间有很大的不同null; 你的例子只显示null......

但回答; 不是真的......你给它什么价值?

您可以测试并使用默认值,或使用Nullable<decimal>(aka decimal?):

null(不DBNull)

decimal? valOrNull = (decimal?)returnvalue[0];
Run Code Online (Sandbox Code Playgroud)

或考虑DBNull到:

object val = returnvalue[0];
decimal? valOrNull = (val == null || val is DBNull) ? (decimal?)null
            : (decimal?)val; // or convert if it is a string etc
Run Code Online (Sandbox Code Playgroud)