Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DateTime和DbNull.Value_C# - Fatal编程技术网

C# DateTime和DbNull.Value

C# DateTime和DbNull.Value,c#,C#,有人知道为什么会这样吗: if (_item.Created == DateTime.MinValue) { ListSqlParam.Add(new SqlParameter("@TransactionCreated", DBNull.Value)); } else { ListSqlParam.Add(new SqlParameter("@TransactionCreated", _item.Created)); } 但不是这个: ListSqlParam.Add(new SqlP

有人知道为什么会这样吗:

if (_item.Created == DateTime.MinValue)
{
  ListSqlParam.Add(new SqlParameter("@TransactionCreated", DBNull.Value));
}
else
{
  ListSqlParam.Add(new SqlParameter("@TransactionCreated", _item.Created));
}
但不是这个:

ListSqlParam.Add(new SqlParameter("@TransactionCreated",((_item.Created == DateTime.MinValue) ? DBNull.Value : _item.Created)));
使用时,由条件的不同方面返回的两种类型(true和false分支)应该相同,或者可以相互隐式转换


DBNull.Value
DateTime
不是这样的值。

原因是条件运算符是特定类型的表达式。编译器根据运算符两个分支中表达式的类型推断出该特定类型。
在您的代码中,编译器无法推断此特定类型,因为
DBNull.Value
\u item.Created
属于不同且不相关的类型。不能将其中一个强制转换为另一个的类型

若要使其工作,请将至少一个分支强制转换为
对象

(_item.Created == DateTime.MinValue) ? (object)DBNull.Value : _item.Created
改用:

_item.Created == DateTime.MinValue ? SqlDateTime.Null : new SqlDateTime(_item.Created)

什么在第二种情况下不起作用?@ryadavilli-它不会编译。
DBNull.Value
\u item.Created
的类型不同。