类型"/>
C#的装箱拆箱和Nullable类型
1.装箱就是把值类型转变为引用类型,拆箱就是将引用类型转变为值类型。
int iToBoxing = 100;
object iBoxed = iToBoxing;
装箱不需要特别的语法,其实就是一个隐式转换,因为所有的数据类型都是System.Object的子集。
- 装箱操作的具体过程:
“值类型”是存储在内存的“栈”上面,而引用类型只会在“栈”上面存储一个引用,在“堆”上面存储具体的值,装箱就相当于把值类型打包放在“堆”上面,在栈上面只留一个引用,拆箱则是反过来。
- 拆箱:
int iUnboxing = (int)iBoxed;
相当于显示转换,同样有时候会出现数据丢失或者报错。比如:
object nullObject = null;
int iNull = (int)nullObject;
//编译报错“空引用异常”
装箱和拆箱操作会占用不少的内存,要尽量避免进行过多装箱拆箱操作。
int ? isNullable = 100;
等价于
System.Nullable<int>isNullable2 = 10;
相当于声明了一个整型的变量iii,如果第一个值isNullable为空的话,就赋给它500,如果isNullable不为空,就赋予它isNullable的值。
更多推荐
C#的装箱拆箱和Nullable类型
发布评论