C# 2.0中的可空类型以及?和??

 最近在学习C# 2.0,在.NET Framework 2.0中新增加了System.Nullable泛型结构,它具有处理值类型数据具和处理null的功能。例如:

System.Nullable < int >  i  =   2 ;
=   null ;
System.Nullable
< bool >  b  =   null ;


    另外C#中还提供了上述表示方法的简写形式:

int ?  i  =   null ;
bool ?  b  =   null ;


    此时,i除了可以正常处理int值外还可以被赋值为null;b则可以处理true、false和null值。感觉上好像“值类型可以处理null”似的,实际上,上面的System.Nullable<int>是对int的一种扩展,前者可被称为“可空的int”,后者被称为“非空的int”,它们所指的并非同一事物。因此,当把一个可空类型值赋给一个非空类型时,将引发编译错误,例如:

int ?  ni  =   null ;
int  i  =  ni;   // 这一句将引发编译错误


    推荐的方法是赋值前对可空类型的值进行检查,在C#中使用??运算符分配默认值,如:

int ?  ni  =   null ;
int  i  =  ni  ??   0 ;


    ??运算符会首先判断左操作数是否为空,如果为空则返回??后面给出的默认值,否则返回左操作数,其意义类似于:

int ?  ni  =   null ;
int  i  =  ni.HasValue  ?  ni.Value :  0 ;



    提醒:System.Nullable<int>并不等同于int,值类型还是值类型,int类型不能处理null,System.Nullable<int>是一种新的结构类型,被用来处理int类型数据和null。

转载于:https://www.cnblogs.com/yugen/archive/2010/08/03/1791556.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值