C#的装箱拆箱和Nullable类型

1.装箱就是把值类型转变为引用类型,拆箱就是将引用类型转变为值类型

int iToBoxing = 100;
object iBoxed = iToBoxing;

装箱不需要特别的语法,其实就是一个隐式转换,因为所有的数据类型都是System.Object的子集。

  1. 装箱操作的具体过程:

“值类型”是存储在内存的“栈”上面,而引用类型只会在“栈”上面存储一个引用,在“堆”上面存储具体的值,装箱就相当于把值类型打包放在“堆”上面,在栈上面只留一个引用,拆箱则是反过来。

  1. 拆箱:
int iUnboxing = (int)iBoxed;

相当于显示转换,同样有时候会出现数据丢失或者报错。比如:

object nullObject = null;
int iNull = (int)nullObject;
//编译报错“空引用异常”

装箱和拆箱操作会占用不少的内存,要尽量避免进行过多装箱拆箱操作。

int ? isNullable = 100;

等价于

System.Nullable<int>isNullable2 = 10;

相当于声明了一个整型的变量iii,如果第一个值isNullable为空的话,就赋给它500,如果isNullable不为空,就赋予它isNullable的值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值