C#中的条件运算符和返回类型
可能重复:
为什么null需要显式类型转换?
可空类型和三元运算符。 为什么这不起作用?
试图执行以下操作:
sqlCmd.Parameters.Add("@DateCreated", System.Data.SqlDbType.DateTime).Value = myObject.DateCreated == DateTime.MinValue ? DBNull.Value : myObject.DateCreated;
我收到此错误:
无法确定条件表达式的类型,因为’System.DBNull’和’System.DateTime’之间没有隐式转换
我很明白这个错误,但为什么类型甚至是什么,因为Parameters.Value属于对象类型? 有没有办法完成我想要做的事情?
返回值进入某个object
是没有区别的,因为必须首先确定返回值的类型 。
将两个值中的一个( DBNull.Value
, myObject.DateCreated
)转换为另一个的基础,你会没事的。 在这种情况下,基地甚至可以是object
。
这是一个非常常见的问题。 看看我对这个问题的回答:
条件运算符不能隐式转换?
我的博客中的这篇文章描述了一个相关的场景,也会导致用户混淆: