你的程序继续报错:System.InvalidCastException:“对象不能从 DBNull 转换为其他
时间: 2024-03-24 17:37:39 浏览: 179
对象不能从 DBNull 转换为其他类型
5星 · 资源好评率100%
如果使用空合并运算符仍然出现了 `System.InvalidCastException:“对象不能从 DBNull 转换为其他` 错误,可以使用 C# 6.0 中的 null 条件运算符(?.)进行修复。
```csharp
double totalSum = dt.Tables[0].Rows[0]["total_sum"] as double? ?? 0;
double anotherSum = dt.Tables[0].Rows[0]["another_sum"] as double? ?? 0;
double total_sum1 = dt.Tables[0].Rows[0]["total_sum1"] as double? ?? 0;
double total_sum2 = dt.Tables[0].Rows[0]["total_sum2"] as double? ?? 0;
double total_sum3 = dt.Tables[0].Rows[0]["total_sum3"] as double? ?? 0;
```
在上面的代码中,使用 `as` 运算符将字段的值转换为 `double?` 类型(可空的 `double` 类型),然后使用空合并运算符将其转换为非空的 `double` 类型,如果字段的值为 `DBNull.Value`,则 `as` 运算符会返回 `null`,然后空合并运算符会返回默认值 0。
这种方法可以避免 DBNull 转换为其他类型的异常,并且比使用 `Convert.ToDouble` 方法更加简洁。
阅读全文