我已定义类人属性生日为可为空DateTime?,那么为什么不应该在以下示例中使用空合并运算符?C#?空合并运算符问题
cmd.Parameters.Add(new SqlParameter("@Birthday",
SqlDbType.SmallDateTime)).Value =
person.Birthday ?? DBNull.Value;
我得到的编译器错误是“Operator'??'不能应用于'System.DateTime'类型的操作数和“System.DBNull””
下也得到了一个编译错误:所推荐的重构,它编译,但是没有正常工作
cmd.Parameters.Add(new SqlParameter("@Birthday",
SqlDbType.SmallDateTime)).Value =
(person.Birthday == null) ? person.Birthday:DBNull.Value;
我添加了一个投地(对象)在两种情况下,该值都存储在sqlserver数据库中为null。
SqlDbType.SmallDateTime)).Value =
person.Birthday ?? (object)DBNull.Value;
有人可以解释这里发生了什么吗?
我需要使用下面的代码笨拙:
if (person.Birthday == null)
cmd.Parameters.Add("@Birthday", SqlDbType.SmallDateTime).Value
= DBNull.Value;
else cmd.Parameters.Add("@Birthday", SqlDbType.SmallDateTime).Value =
person.Birthday;
重复http://stackoverflow.com/questions/218808/c-ado-net-nulls-and-dbnull-is-there-more-efficient-syntax – sgriffinusa 2010-08-06 15:25:17
从其他帖子得到了这个:SqlDbType.SmallDateTime) ).Value = person.Birthday ?? (对象)DBNull.Value;谢谢! – 2010-08-06 16:18:38