null和System.DBNull.Value之间有什么区别吗?如果是,那是什么?
我现在注意到了这种行为-
while (rdr.Read())
{
if (rdr["Id"] != null) //if (rdr["Id"] != System.DBNull.Value)
{
int x = Convert.ToInt32(rdr["Id"]);
}
}
虽然我使用sql datareader从数据库检索数据,但是没有返回if(rdr["Id"] != null)
返回的值true
,最终抛出了将null强制转换为整数的异常。
但是,如果我使用if (rdr["Id"] != System.DBNull.Value)
return的话false
。
null和System.DBNull.Value有什么区别?
System.Data
另一个是表示缺少引用对象的特殊值。他们彼此无关。您能详细说明一下您困惑的地方吗?是您真正的问题“为什么DataRows
和DataReaders
放DBNull.Value
里面本身,而不是null
?”