Unity3d 脚本编程 类型系统

1. 引用类型总是分配在托管堆上,但值类型并非总是分配在线程栈上。

    值类型一般分配在线程栈上,不受垃圾回收机制GC作用的影响。一些特殊情况下,值类型也分配在托管堆中,例如:数组中的元素,引用类型中的值类型字段,迭代器块中的值类型变量,闭包情况下匿名函数中的局部变量。

2. 引用类型

  • Class
  • Interface
  • Delegate
  • Dynamic
  • Object
  • String

3. 值类型(派生自System.ValType)

  • 结构(数字型结构:常见的有System.Int32, System.Float, System.Decimal, 布尔型结构:System.Boolean, 用户自定义结构
  • 枚举

4. System.ValueType

  所有的结构都是派生自抽象类System.ValueType,而System.ValueType本身又派生于System.Object。 所有枚举的基类System.Enum也是从System.ValueType派生而来。

5. new 关键字

  new关键字的作用仅仅是告诉编译器该实例已经被初始化。

  例如:StructVal val = new StructVal(2, 3);会在线程栈上分配内存,

     StructVal val; 也同样分配了内存,并将字段初始化为0;但由于没有用new关键字,编译器并不知道它已经初始化,直接使用可能报错。eg:print(val.a);

 

posted @ 2017-07-08 21:17  吴筱军  阅读(160)  评论(0)    收藏  举报