null、DBNull和String.Empty的区别

本文解析了null和DBNull的概念及其在编程中的应用。null是引用类型变量的默认值,表示不引用任何对象。DBNull则用于指示数据库中不存在某个已知值的情况,并且DBNull从不等于任何值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Null

    null 关键字是表示不引用任何对象的空引用的文字值。null 是引用类型变量的默认值。也就是只有引用型的变量可以为null,如果 int i=null,的话,是不可以的,因为Int是值类型的。

""和String.Empty

     这两个都是表示空字符串,一个意思。其中要注意的重点是string str1="" 和 string str2=null 的区别,这样定义后,str1是一个空字符串,空字符串是一个特殊的字符串,只不过这个字符串的值为空,在内存中是有准确的指向的;string str2=null,这样定义后,只是定义了一个string 类的引用,str2并没有指向任何地方,在使用前如果不实例化的话,都将报错。

DBNull

    该类用于指示不存在某个已知值(通常在数据库应用程序中)。

    在数据库应用程序中,空对象是字段的有效值。该类区分空值(空对象)和未初始化值(DBNull.Value   实例)。例如,表可以包含具有未初始化字段的记录。默认情况下,这些未初始化字段具有   DBNull   值。

    该类还可以用于在   COM   Interop   中区分  VT_NULL   变量(与空对象关联)和   VT_EMPTY   变量(与   DBNull.Value   实例关联)。

    DBNull   从不等于任何值。

    DBNull在DotNet是单独的一个类型 System.DBNull 。它只有一个值 DBNull.Value 。DBNull 直接继承 Object ,所以 DBNull 不是 string , 不是 int , 也不是 DateTime ...... 访问 SQL数据库的数据密集应用程序必须使用   System.Data.SqlTypes   类,这些类对空值具有内在支持。

    DBNull唯一作用是表示数据库中表和视图的字符串,数字,或日期为空。因为数据库NULL和C#中的null不同。DotNet储存这些数据的类(DataRow等)都是以 object 的形式即对象形式来储存数据的。但是对于DataRow等这些数据库类 , 它的 row[column] 返回值永远不会是 null , 要么就是具体的为column 的类型的值 ,要么就是 DBNull 。 所以 row[column].ToString() 这个写法永远不会在ToString那里发生NullReferenceException。DBNull 实现了 IConvertible接口(使用 IConvertible 接口基本公共语言运行库类型中的转换)。但是,除了 ToString 是正常的外,其他的ToXXX都会抛出不能转换的错误。 5rt.IsDBNull()4ne.com

    Convert.IsDBNull()用来判断对象是否为DBNULL的。其返回值是True或Flase。 注意Convert.isDBNull(null)为false。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值