注册 登录
编程论坛 ASP.NET技术论坛

游戏开发中NET的装箱和拆箱操作你会用吗?

菜鸟在线哈哈 发布于 2016-09-13 17:31, 2992 次点击
  游戏开发的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);
0 回复
1