猿问

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

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有什么区别?


白衣非少年
浏览 553回答 3
3回答

慕的地8271018

井,null不是任何类型的实例。相反,它是一个无效的引用。然而,System.DbNull.Value的实例的有效引用。System.DbNull (System.DbNull是单身人士System.DbNull.Value提供对表示不存在的类的单个实例的引用。*值在数据库中。*我们通常会说null但我不想混淆这个问题。所以,两者在概念上有很大的区别。关键词null表示无效引用。全班System.DbNull表示数据库字段中不存在的值。一般来说,我们应该尽量避免使用相同的东西(在这种情况下)。null)表示两个非常不同的概念(在本例中为无效引用,而不是数据库字段中不存在的值)。记住,这就是为什么很多人提倡使用空对象模式一般来说,这正是System.DbNull就是一个例子。

海绵宝宝撒

的文件DBNull类:不要混淆面向对象编程语言中的NULL概念和DBNull对象。在面向对象的编程语言中,NULL意味着缺少对象的引用.DBNull表示未初始化的变量或不存在的数据库列。
随时随地看视频慕课网APP
我要回答