请你分析一下CS1和CS2。当我在CS2中使用(DateTime?)null
时,为什么我需要在CS1中添加_my_date = null;
。如果我没有在CS1中添加(DateTime?)
,我会被'祝福':(由于以下错误
无法确定条件表达式的类型,因为没有....
DateTime? _my_date;
DataTable _dt = GetData();
// Code Snippet 1: CS1
_my_date = _dt.Rows[0]["MyDate"] == DBNull.Value ? (DateTime?)null : Convert.ToDateTime(_dt.Rows[0]["MyDate"]);
// Code Snippet 2: CS2
if (_dt.Rows[0]["MyDate"] == DBNull.Value)
{
_my_date = null;
}
else
{
_my_date = Convert.ToDateTime(_dt.Rows[0]["MyDate"]);
}
答案 0 :(得分:0)
因为无法确定'null'的类型。我想这与类型的大小有关。比如说null,意味着所有的位都将设置为0(我在这里推测),然后你需要知道你的结构中有多少位。例如,short可以比DateTime更少的字节。
因此,在这种情况下,您需要告知它所期望的类型,因为它无法将null转换为可为空的日期时间。