【发布时间】:2010-11-13 09:22:45
【问题描述】:
我有这个 C# 源代码的摘录:
object valueFromDatabase;
decimal result;
valueFromDatabase = DBNull.Value;
result = (decimal)(valueFromDatabase != DBNull.Value ? valueFromDatabase : 0);
result = (valueFromDatabase != DBNull.Value ? (decimal)valueFromDatabase : (decimal)0);
第一个结果评估会抛出一个InvalidCastException,而第二个则不会。
这两者有什么区别?
【问题讨论】:
-
我想澄清一下,在第一个评估为零而不是 DBNull.value。为什么将 0 转换为十进制会引发异常?