Unity中的值传递与引用传递
1. 值類(lèi)型
值類(lèi)型變量本身保存了該類(lèi)型的全部數(shù)據(jù),當(dāng)聲明一個(gè)值類(lèi)型的變量時(shí),該變量會(huì)被分配到棧(Stack)上。
2. 引用類(lèi)型
引用類(lèi)型變量本身保存的是位于堆(Heap)上的該類(lèi)型的實(shí)例的內(nèi)存地址,并不包含數(shù)據(jù)。當(dāng)聲明一個(gè)引用類(lèi)型變量時(shí),該變量會(huì)被分配到棧上。如果僅僅只是聲明這樣一個(gè)變量,由于在堆上還沒(méi)有創(chuàng)建該類(lèi)型的實(shí)例,因此,變量值為null,意思是不指向任何類(lèi)型實(shí)例(堆上的對(duì)象)。對(duì)于變量的類(lèi)型聲明,用于限制此變量可以保存的類(lèi)型。?
3. Unity中的值類(lèi)型與引用類(lèi)型
值類(lèi)型包括結(jié)構(gòu)體(struct)和枚舉(enum)。
引用類(lèi)型包括類(lèi)(class)、接口(interface)、委托(delegate)、數(shù)組(array)等。
4.說(shuō)點(diǎn)人話(huà)
常見(jiàn)的簡(jiǎn)單類(lèi)型如short、int、long、float、double、byte、char等其本質(zhì)上都是結(jié)構(gòu)體,對(duì)應(yīng)struct System.Int16、System.Int32、System.Int64、System.Single、System.Double、Syetem.Byte、System.Char,因此它們都是值類(lèi)型。但string和object例外,它們本質(zhì)上是類(lèi),對(duì)應(yīng)class System.String和System.Object,所以它們是引用類(lèi)型。
string a = "aaa"; //==> a----->new String("aaa") string b = a; //==> b----->a, 傳引用 b = "bbb"; //==> b----->new String("bbb"), 傳引用,b指向了一個(gè)新的字符串,a并沒(méi)有變。Vector3本質(zhì)是結(jié)構(gòu)體(struct),所以是值類(lèi)型。
組件(component)本質(zhì)是類(lèi)(class),所以是引用類(lèi)型。
轉(zhuǎn)載于:https://www.cnblogs.com/DonYao/p/8662148.html
總結(jié)
以上是生活随笔為你收集整理的Unity中的值传递与引用传递的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 虚拟机下CentOS7开启SSH连接
- 下一篇: jvm内存分配解释