引用類型有哪四種 在C#中,可以通過裝箱和拆箱實(shí)現(xiàn)值類型與引用類型之間相互轉(zhuǎn)換,在下列代碼中,有()處實(shí)現(xiàn)了拆箱?
在C#中,可以通過裝箱和拆箱實(shí)現(xiàn)值類型與引用類型之間相互轉(zhuǎn)換,在下列代碼中,有()處實(shí)現(xiàn)了拆箱?你的0、1、2和3在哪里?您可以從以下示例中看到:int Val=100object obj=Val控制
在C#中,可以通過裝箱和拆箱實(shí)現(xiàn)值類型與引用類型之間相互轉(zhuǎn)換,在下列代碼中,有()處實(shí)現(xiàn)了拆箱?
你的0、1、2和3在哪里?
您可以從以下示例中看到:
int Val=100
object obj=Val控制臺(tái)寫入線(“object的值={0}”,obj)
這是一個(gè)裝箱過程。它是將值類型轉(zhuǎn)換為引用類型的過程。
int val=100
object obj=val
int num=(int)obj控制臺(tái)寫入線(“num:{0}”,num)
這是一個(gè)解包過程。它是將值類型轉(zhuǎn)換為引用類型,然后從引用類型轉(zhuǎn)換為值類型的過程。注意:裝箱的對(duì)象只能解包
事實(shí)上,這是堆和堆棧的區(qū)別。值類型直接在堆棧上定義,例如int type。定義int實(shí)例不需要新的引用類型,而引用類型會(huì)打開內(nèi)存堆中的空間,例如類。引用一個(gè)類的實(shí)例需要新的,當(dāng)傳遞參數(shù)時(shí)引用類型實(shí)際上是新的指針被傳遞,也就是類的實(shí)際內(nèi)存位置的地址。因此,在方法中對(duì)類的操作將直接更改類的值,并且將值類型作為參數(shù)在方法中的操作不會(huì)影響原始值。再多說幾句話,建立和操作引用類型所消耗的資源要比值類型高得多,因?yàn)閮?nèi)存訪問非常重要堆的效率要比堆棧訪問低得多,但是由于堆??臻g有限,只能把值類型放進(jìn)去,不能什么都放進(jìn)去