无法隐式转换DBNull为Int?
代码片段中出现错误:“无法从DBNull隐式转换为int”。这是由于?:运算符的性质造成的,因为它要求其计算的表达式的类型相同。
在本例中,第一个表达式(AgeItem.AgeIndex)是整数,而第二个表达式(DBNull.Value)是DBNull类型。这些类型不兼容,导致错误。
解决方案:强制转换为对象或使用空合并运算符
要解决此问题,您可以选择以下两种方法:
<code class="language-csharp">SqlParameter[] parameters = new SqlParameter[1]; SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int); planIndexParameter.Value = (object)AgeItem.AgeIndex ?? DBNull.Value; parameters[0] = planIndexParameter; </code>
<code class="language-csharp">SqlParameter[] parameters = new SqlParameter[1]; SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int); planIndexParameter.Value = AgeItem.AgeIndex ?? DBNull.Value; parameters[0] = planIndexParameter; </code>
这些解决方案允许您将整数或DBNull.Value赋值给SqlParameter,而不会遇到任何类型转换错误。
以上是如何处理 C# 中的'无法隐式地将 DBNull 转换为 Int”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!