游戏开发中NET的装箱和拆箱操作你会用吗?
游戏开发的NET中,数据类型划分为值类型和引用(不等同于C++的指针)类型,与此对应,内存分配被分成了两种方式,一为栈,二为堆,注意:是托管堆。值类型只会在栈中分配。引用类型分配内存与托管堆。托管堆对应于垃圾回收。在C#中装箱和拆箱是一个抽象的概念.
* 装箱是将值类型的数据转化引用类型
* 拆箱是将经过装箱后引用类型转换为值类型
游戏开发的装箱和拆箱的意义:
利用装箱和拆箱功能,可通过允许值类型的任何值与Object 类型的值相互转换,将值类型与引用类型链接起来.
第一种方法:调用一个含类型为Object的参数的方法,该Object可支持任意为型,以便通用。当你需要将一个值类型(如Int32)传入时,需要装箱。
第二种用法:一个非泛型的容器,同样是为了保证通用,而将元素类型定义为Object。于是,要将值类型数据加入容器时,需要装箱。
1) 装箱
这是一个装箱的过程,是将值类型转换为引用类型的过程。
int i= 123;
object o= i;
Console.WriteLine (“对象的值 = {0}", o);
2)拆箱
在游戏开发中的上一步的基础上,我们在将引用类型转换为值类型。
int i=10;
object o=i;
int j=(int)o;
Console.WriteLine("j={0}",j);