首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C# ADO.NET: null和DbNull --还有更有效的语法吗?

C# ADO.NET: null和DbNull --还有更有效的语法吗?
EN

Stack Overflow用户
提问于 2008-10-20 15:23:55
回答 6查看 34.3K关注 0票数 48

我有一个试图使用DbParameter插入到字段中的DateTime?。我像这样创建参数:

DbParameter datePrm = updateStmt.CreateParameter();
datePrm.ParameterName = "@change_date";

然后我想把DateTime?的值放到dataPrm.Value中,同时考虑nulls。

我以为一开始我会很聪明:

datePrm.Value = nullableDate ?? DBNull.Value;

但是失败了,错误如下

运算符'??‘不能应用于'System.DateTime?‘类型的操作数和'System.DBNull‘

所以我猜只有当第二个参数是第一个参数的不可空版本时,它才有效。因此,我选择了:

datePrm.Value = nullableDate.HasValue ? nullableDate.Value : DBNull.Value;

但这也不起作用:

无法确定条件表达式的

类型,因为'System.DateTime‘和'System.DBNull’之间没有隐式转换

但我不想在这些类型之间进行转换!

到目前为止,我唯一能做的就是:

if (nullableDate.HasValue)
  datePrm.Value = nullableDate.Value;
else
  datePrm.Value = DBNull.Value;

这真的是我写这篇文章的唯一方法吗?有没有办法让使用三元运算符的一行程序工作?

更新:我真的不明白为什么??版本不起作用。MSDN说:

The ??如果运算符不为空,则返回左操作数,否则返回右操作数。

那正是我想要的!

Update2:,这在最后是很明显的:

datePrm.Value = nullableDate ?? (object)DBNull.Value;
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/218808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档