操作员 '??'不能应用于“字符串”和“ system.dbnull”类型的操作数
题
我有以下C#代码:
sqlCommand.Parameters.AddWithValue("@Parameter", table.Value ?? DBNull.Value);
但是它引发了以下汇编错误:
操作员
??
不能应用于类型的操作数string
和System.DBNull
为什么编译器不允许此语法?
解决方案
两个操作数都必须是对象。使用显式演员:
(object)table.Value ?? DBNull.Value;
其他提示
之间没有自动转换 string
和 System.DBNull
因此,您需要通过将铸件添加到 object
:
sqlCommandObject.Parameters.AddWithValue("@Parameter",
table.Value ?? (object)DBNull.Value);
这是因为之间没有隐含的转换 string
和 System.DBNull
.
您可以使用convert.dbnull:而不是使用dbnull.value:
sqlCommand.Parameters.AddWithValue("@Parameter", table.Value ?? Convert.DBNull);
我相信在幕后,它基本上正在做与其他示例中提到的相同/相似的事情(即将dbnull铸造为对象),但它使其变得更简单/简单。
不隶属于 StackOverflow