在C# 中,我们采纳装箱来完成将值范例转换成援用范例,用拆箱完成将援用范例转换成值范例;换句话说,它能够完成从任何值范例、援用范例到Object范例之间的转换,有了装箱与拆箱对任何范例来讲我们都能够看做object 范例 (有关object 范例的内容能够点击 援用范例----object类 进入)
装箱转换:
在这里我要补充一下,在.NET中,数据范例划分为值范例和援用(不等同于C++的指针)范例,与此对应,内存分派被分成了两种体式格局,一为栈,二为堆,(是托管堆。)值范例只会在栈中分派。援用范例分派内存与托管堆。
写个例子:
int i = 123; object o = i; //完成装箱操纵,实在也是隐式转换。
装箱转换的原理图以下:
装箱转换实质上是一种复制范例转换,也就是说当我们完成装箱后,再转变 i 的值 o 的值不会转变
拆箱转换:
和装箱转换恰好相反,拆箱转换是指将一个对象范例显现的转换为一个值范例,拆箱的历程分为两步,起首,搜检这个对象实例,看他是不是为给定的值范例的装箱值,然后,把这个实例的值拷贝给值范例的变量;
写个例子(基于上面的装箱代码):
int n_int = (int)o; //强迫将object范例转换为int 范例
能够看出恰好是装箱的逆历程,将对象强迫转换为本来的范例,必需要注意的是,拆箱的值必需和它要转换的目的的变量有雷同的范例。
在这里我有必要强调的是装箱和拆箱是 从值范例或援用范例到object范例的转换,从object范例到值范例或援用范例的转换.
以上就是C#进修日志18----装箱(boxing)转换与拆箱(unboxing)转换的内容,更多相关内容请关注ki4网(www.ki4.cn)!