【发布时间】:2010-12-05 11:12:14
【问题描述】:
我正在编写一个 C# 例程来调用存储过程。在我传入的参数列表中,其中一个值可能合法地为空。所以我想我会使用这样的一行:
cmd.Parameters.Add(new SqlParameter("@theParam", theParam ?? DBNull.Value));
不幸的是,这会返回以下错误:
CS0019:操作员 '??'不能应用于'string'和'System.DBNull'类型的操作数
现在,这似乎很清楚,但我不明白其背后的原理。为什么这行不通? (通常,当我不明白为什么某事不工作时,并不是它不能工作......而是我做错了。)
我真的必须将其延伸为更长的 if-then 语句吗?
编辑:(顺便说一句,对于那些建议只使用“null”的人来说,它不起作用。我最初认为 null 也会自动翻译成 DBNull,但显然没有。(谁知道?))
【问题讨论】:
标签: c# null-coalescing-operator