下面的代码给出了一个错误-“没有从DBnull到int的隐式转换”。
SqlParameter[] parameters = new SqlParameter[1]; SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int); planIndexParameter.Value = (AgeItem.AgeIndex== null) ? DBNull.Value : AgeItem.AgeIndex; parameters[0] = planIndexParameter;
问题在于?:操作员无法确定返回类型,因为您正在返回int不兼容的值或DBNull类型值。
?:
int
您当然可以将AgeIndex的实例转换为object可以满足?:要求的类型。
object
您可以??按以下方式使用null-coalescing运算符
??
SqlParameter[] parameters = new SqlParameter[1]; SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int); planIndexParameter.Value = (object)AgeItem.AgeIndex ?? DBNull.Value; parameters[0] = planIndexParameter;
这是MSDN文档中用于?:操作员的引言,解释了该问题。
first_expression和second_expression的类型必须相同,或者必须存在从一种类型到另一种类型的隐式转换。