为了账号安全,请及时绑定邮箱和手机立即绑定

NULL和System.DBNull.Value之间有什么区别?

NULL和System.DBNull.Value之间有什么区别?

白衣非少年 2019-07-12 10:11:17
NULL和System.DBNull.Value之间有什么区别?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并最终抛出一个异常,将空转换为整数。但是,如果我用if (rdr["Id"] != System.DBNull.Value)回报false.NULL和System.DBNull.Value有什么区别?
查看完整描述

3 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

井,null不是任何类型的实例。相反,它是一个无效的引用。

然而,System.DbNull.Value的实例的有效引用。System.DbNull (System.DbNull是单身人士System.DbNull.Value提供对表示不存在的类的单个实例的引用。*值在数据库中。

*我们通常会说null但我不想混淆这个问题。

所以,两者在概念上有很大的区别。关键词null表示无效引用。全班System.DbNull表示数据库字段中不存在的值。一般来说,我们应该尽量避免使用相同的东西(在这种情况下)。null)表示两个非常不同的概念(在本例中为无效引用,而不是数据库字段中不存在的值)。

记住,这就是为什么很多人提倡使用空对象模式一般来说,这正是System.DbNull就是一个例子。


查看完整回答
反对 回复 2019-07-12
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

的文件DBNull类:

不要混淆面向对象编程语言中的NULL概念和DBNull对象。在面向对象的编程语言中,NULL意味着缺少对象的引用.DBNull表示未初始化的变量或不存在的数据库列。


查看完整回答
反对 回复 2019-07-12
  • 3 回答
  • 0 关注
  • 552 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信