1. 程式人生 > >值型別和引用型別有什麼區別?

值型別和引用型別有什麼區別?

byteshortintlongfloatdoubledecimalcharbool struct 統稱為值型別。

string,類等皆為引用型別。

值型別變數聲明後,不管是否已經賦值,編譯器為其分配記憶體。此時該值儲存於棧上;int i=10;執行之前為預設一個值0。

引用型別定義時在棧上開闢一個空間用來存放其在堆上的地址,當賦值或者例項化時候就會在堆上開闢一個空間,然後把堆中的地址存放在棧中,這時候棧就存放了其地址。

記憶體分配如下圖:

引用傳遞的另外一個例項



為了解決頻繁的裝箱和拆箱消耗資源,引入了泛型的概念,泛型是類,是引用型別,但是在自己內部做了特殊的處理,使用過程不會進行裝箱拆箱操作