Unity中的值传递与引用传递

1. 值类型

  值类型变量本身保存了该类型的全部数据,当声明一个值类型的变量时,该变量会被分配到栈(Stack)上。

2. 引用类型

  引用类型变量本身保存的是位于堆(Heap)上的该类型的实例的内存地址,并不包含数据。当声明一个引用类型变量时,该变量会被分配到栈上。如果仅仅只是声明这样一个变量,由于在堆上还没有创建该类型的实例,因此,变量值为null,意思是不指向任何类型实例(堆上的对象)。对于变量的类型声明,用于限制此变量可以保存的类型。 

3. Unity中的值类型与引用类型

  值类型包括结构体(struct)和枚举(enum)。

  引用类型包括类(class)、接口(interface)、委托(delegate)、数组(array)等。

  常见的简单类型如short、int、long、float、double、byte、char等其本质上都是结构体,对应struct System.Int16、System.Int32、System.Int64、System.Single、System.Double、Syetem.Byte、System.Char,因此它们都是值类型。但string和object例外,它们本质上是类,对应class System.String和System.Object,所以它们是引用类型。

  Vector3本质是结构体(struct),所以是值类型。

  组件本质是类(class),所以是引用类型。

猜你喜欢

转载自www.cnblogs.com/DonYao/p/9728913.html