我有一个可以为空的DateTime字段"BirthDate",现有代码以这种方式处理这个问题
info.BirthDate = (DateTime?)reader["Birthdate"];
Run Code Online (Sandbox Code Playgroud)
这会导致"无效转换"错误,并且会中断.好吧,我理解这是因为nulls的返回方式与sql不同,并且类型为"DBNull"
结果证明是这样的
if (reader["Birthdate"] != DBNull.Value)
{
info.Birthdate = (DateTime)reader["Birthdate"];
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么这个有效吗?..我特别迷失在DBNull的.Value部分.如果IS返回作为的DBNull如何代码连这个块内到达?