可空值类型

C#对可空类型的支持

Int32?等价于Nullable< Int32 > 不仅如此,C#在此基础上为可空实例上还允许执行类型转化:
Int32? a = 5;
Int32? b = null;
Int32 c = (Int32)a; //将可空类型的a强制转换成非可空类型
Double? d = 5; //将Int32类型的值5转型成double,这个时候的d = 5.0
Double ? e = b; //e是null

C#的空接合操作符

就是三元操作符的语法糖
Int32 x = b ?? 123 <=> x = b? b : 123;

可空值类型的装箱

CLR会对可空值的变量进行特殊的操作,比如当一个Nullable< Int32 >传值给Object的时候。其实Nullable< Int 32>只是理论上存在NULL值,但是本身或许并不为Null,这个时候CLR的特殊机制就会发生作用,如果为NUll值,CLR不会发生装箱,而是直接返回NUll值,如果不为NULL,这里我们假如它为5,那么返回的就不是Nullable< Int 32>而是已经装箱过的< Int 32>

可空值类型的拆箱

//创建已经拆箱的Int32
Object o = 5;
//把O拆箱成一个Nullable< Int 32>和一个< Int 32>
Int32? a = (Int32?)o;
int b = (int32) o;
//创建一个初始化为null的一个引用
o = null;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值