(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:         }
posted on 2011-09-13 22:12  DeepSky_  阅读(64265)  评论(2编辑  收藏  举报