您的位置:首页 > 编程语言 > C#

理解null值和C#中可空类型(NullAble<T>)

2013-07-26 12:22 316 查看
    在C#中有一个关键字是null,它表示不引用任何对象的空引用的文字值,也就是当一个引用类型的变量被赋予null值时,该变量是空引用,没有在堆上分配空间,null是引用类型变量的默认值。从定义上看,只有引用类型变量才可以赋予null值。

    可以定义一个类,即可空类型,就是指可以赋值为null的类型。可空类型是System.Nullable<T>结构的实例。若是可空类型,则既可以表示其基础值类型正常范围内的值,同时又可以表示空值null。

   定义null的类型有两种方式(以下的T代表的是数据类型,而a代表变量名):

    1)Nullable<T>

    2)T?a

例如申明一个可空类型:

1)第一种申明方式

Nullable<Int32> i=null;  //申明一个变量名为i的可空类型,其基础类型为Int32的值类型
Nullable<Int32>i=32;    //因为其基础类型T为Int32,因此可以赋值为32


2)第二种申明方式

int?a=null; //申明一个变量名为a的可空类型,其基础类型为int的值类型
int?a=3;


可以为null类型的都是具有两个公共只读属性:

1)HasValue属于bool型,当变量包含非null值时,它被设置为true;

2)Value,Value与基础类型相同,如果HasValue为true时,则说明Value包含有意义的值。

    此外如果基础类型的值为null时,则使用System.Nullable.GetValueOrDefault属性返回该基础类型所赋的值或默认值,例如int y =num.GetValueOrDefault();

static void Main(string[] args)
{
Nullable<Int32> num = null;//申明一个名为num的可空类型,基础类型为Int32
if (num.HasValue == true)//如果HasValue为true时表明其num包含非null值
Console.WriteLine(num.Value);
else                    //此时说明num包含null值
Console.WriteLine("num=null");
int y = num.GetValueOrDefault();//将num默认值赋给y,int类型的默认值是0
try  //如果num.value为空时则抛出异常
{
y = num.Value;//将num的值赋给value,此时y必须具有一个非空的值
}                 //因为y为int型,而int型并不是可空类型
catch (Exception e)
{
Console.WriteLine(e.Message);//捕获异常,并显示错误信息
}
Console.ReadKey();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐