我刚刚看了这个帖子顶端回答:点击 问题插入字符串或NULL到SQL Server数据库

纠正我,如果我错了,但可以?? - 运营商不仅在同类型的两个变量被使用,如果不是我将不胜感激,如果任何人都可以解决我的小问题

我试图在我的项目类似下面的一个插入一些代码。

Dictionary<string, string> strings = new Dictionary<string, string>()
{
    {"@param0", strParam0},
    {"@param1", strParam1},
    {"@param2", strParam2}
};
foreach (string param in strings.Keys)
{
    cmd.Parameters.AddWithValue(param, strings[param] ?? DBNull.Value);
}

但是Visual Studio中使用以下信息抱怨:结果 “运营商‘??’可以不适用于类型“串”和“System.DBNull””

的操作数
有帮助吗?

解决方案

的DBNull和空不是相同类型,也不是空类型或引用类型和DBNull的。您只能使用?用相同类型的值。

一个能想到的ΔΣ操作者如语法糖为:

(left != null) ? left : right

和三元操作需要两个左,右是相同类型的,因此,因此左和右??操作者也必须是同一类型的。

所以,很遗憾,没有..你不能做这种方式,至少在没有一些丑陋的铸造。

其他提示

尝试:

cmd.Parameters.AddWithValue(param, (object)strings[param] ?? DBNull.Value);
    cmd.Parameters.AddWithValue(param, strings[param] == null ? DBNull.Value : strings[param]);

唯一的缺陷是,它会做的字典里查两次!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top