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);

浙公网安备 33010602011771号