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

    在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();
        }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值