c# 判断 值 是否为NUll

摘要:
NULLnull关键字是一个文字值,表示不引用任何对象的空引用。若要确定它是否为NULL,例如:if(dataGridView2.CurrentRow!确定DBNULL的方法是:1.使用OleDbDataReader.isDBNull()方法。列编号在()中。2.因为上面的方法需要知道列号,而且很多时候我们只知道列名,所以只需使用OleDbDataReader[“列名”]。toString()=“”要确定其值是否为null或DBNull3,请使用Convert isDBNull方法进行判断。要判断的表达式填写在()-------------------------------------------------------------------------------------------------------------------注意:1.当声明变量但未初始化时,变量的默认值不是NULL,而是为系统设置的默认值,例如Bool类型的默认值是FALSE。

(1) NULL 
null 关键字是表示不引用任何对象的空引用的文字值。null 是引用类型变量的默认值。那么也只有引用型的变量可以为NULL,如果 int i=null,的话,是不可以的,因为Int是值类型的。C#允许使用==或!=来判断是否为NULL,例如:if(dataGridView2.CurrentRow != null) ...。


(2) DBNULL 
DBNull在DotNet是单独的一个类型,该类只能存在唯一的实例,DBNULL.,DBNull唯一作用是可以表示数据库中的字符串,数字,或日期,为什么可以表示原因是DotNet储存这些数据的类(DataRow等)都是以 object 的形式来储存数据的。对于 DataRow , 它的 row[column] 返回的值永远不为 null , 要么就是具体的为column 的类型的值 。 要么就是 DBNull 。 所以 row[column].ToString() 这个写法永远不会在ToString那里发生NullReferenceException。DBNull 实现了 IConvertible 。但是,除了 ToString 是正常的外,其他的ToXXX都会抛出不能转换的错误。

判断DBNULL的方法:

1、用OleDbDataReader.isDBNull()方法,()内是列序号

2、因为上面方法需要知道列序号,而很多时候我们只知道列名,那么干脆用OleDbDataReader[“列名”].toString() != ""来判断它的值不是空或者DBNull

3、用Convert.isDBNull(判断对象)方法进行判断,()内填写要判断的表达式

--------------------------------------------------------------------------------------------------------------------------

注:

1、另外,当一个变量(非引用变量)声明,但是未初始化时,该变量的默认值并非NULL,而为系统设置的默认值,如Bool型的默认值为FALSE。

bool isHere;

messgebox.show(isHere.tostring());   //尽管没有对isHere赋值,但仍可以使用其默认值,FALSE

2、如果需要使用可以使用null值的int、bool等类型型,可以使用int?、bool?类型。还可以将 == 和 != 操作数用于可为 null 的类型,如:if (x != null) y = x;

示例1:

   1: int? y = 10;
   2: if (y != null)
   3: {
   4:     System.Console.WriteLine(y.Value);
   5: }
   6: else
   7: {
   8:     System.Console.WriteLine("Undefined");
   9: }

示例2:

一个根据bool?值设定comboBox控件的属性。CTIsFirstTime为ComboBox控件名。

   1: public bool? IsFirstTime  //允许该值为空
   2:         {
   3:             get
   4:             {
   5:                 if (CTIsFirstTime.SelectedIndex == -1)   //当comboBox什么都没选时,SelectedIndex值为-1
   6:                     return null;
   7:                 else
   8:                 {
   9:                     if (CTIsFirstTime.SelectedIndex == 0)
  10:                         return true;
  11:                     else
  12:                         return false;
  13:                 }
  14:             }
  15:             set
  16:             { 
  17:                 if (value == null)
  18:                     CTIsFirstTime.SelectedIndex = -1; 
  19:                 else
  20:                 {
  21:                     if (value == true)
  22:                         CTIsFirstTime.SelectedIndex = 0; 
  23:                     else
  24:                         CTIsFirstTime.SelectedIndex = 1; 
  25:                 }
  26:             }
  27:         }

免责声明:文章转载自《c# 判断 值 是否为NUll》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇KVM(三)I/O 全虚拟化和准虚拟化yum 下载全量依赖 rpm 包及离线安装(终极解决方案)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

小米路由器3-R3 刷固件

3-3、大功告成,实测:带机12台,内存占用100MB、CPU使用20%不到满载200M带宽。...

浪潮各机型管理芯片BMC IP(智能平台管理接口)设置

NF5240m3/NF5140m3/NF5280m3/SA5212H2/NP5540M3NF5270M3/NF5170M3/NF8420m3IPMI主板集成管理芯片BMCIP设置开机按DEL键进入BIOS设置选择"ServerMgmt"---"BMCNetworkConfiguration"---"lanchannel1/2"---"staticipaddr...

阿里巴巴开源性能监控神器Arthas初体验

今天跟大家介绍一款阿里巴巴开源的性能分析神器Arthas官方网站:https://alibaba.github.io/arthas/index.htmlArthas能为你做什么事情呢?接下来,我们找个项目实际体验一下Arthas。﹏﹏﹏﹏上述几个命令只是性能测工作中常用的一些操作,Arthas还有很多其他维度的监控数据,大家可以去官网看下用户手册学习更多操作...

电脑不识别USB blaster驱动问题

电脑不识别USB blaster,如下图: 解决办法:手动更新...

SqlServer数据库存入decimal类型数据注意事项

对于sqlserver,Decimal可用于存储具有小数点和固定值的值。与浮点和实数不同,十进制用于存储近似值。目的是满足精确数学运算的需要。它是最大和最精确的浮点数字类型。对于十进制类型,请注意必须指定精度;否则,十进制只能存储为整数,就像int一样。例如,十进制是存储长度为18位和小数点后2位的数据。...

Foxyproxy 火狐代理插件

Firefox上的插件Autoproxy一直很难使用。它永远不能更新规则,但foxyproxy可以替代它。用鼠标中键单击foxyproxy图标以在不同的代理方法之间切换。foxyproxy图标从foxhead变为蓝色,因为内容传输发生在网页中,该传输通过默认代理服务器,默认代理的初始颜色为蓝色。...