Hellow C# unity學習記錄(7)值型別引用型別以及引數傳遞

京城下了一場大雪發表於2020-11-26

此部落格用來記錄一下學習的知識點

堆空間和棧空間

系統分配記憶體,自動回收記憶體。
空間比堆空間小。
存取速度比堆空間快。
資料的儲存,先進後出。

手動申請與釋放記憶體(C#中自動釋放)。
空間比棧空間大。
存取速度比棧空間慢。

值型別

值型別定義的變數時儲存在棧中的。

引用型別

引用型別定義的變數,具體的值存在堆中,指向堆中資料的地址存在棧中。

引數傳遞

形參

值傳遞:發生在值型別互相賦值之間,傳遞的是具體的值。

實參

實際引數是呼叫方法時,填入引數列表的引數,有實際的值。

值引數

複製實參的內容傳遞的方法,並不會改變本值。

引用型別引數

複製實參的地址傳遞到引用方法

ref與out關鍵字

ref

方法定義時,形參列表裡引數新增ref關鍵字的引數為引用引數。
呼叫方法時,引用引數必須在傳遞的實參前加ref關鍵字。
變數如果使用ref進行傳參,必須先賦值。
引用引數傳遞的是指向實參裡儲存內容的地址。
方法內可以影響實參裡的儲存。

out

方法定義時,形參列表裡引數前加out關鍵的引數為輸出引數。
呼叫方法時,引用引數必須在傳遞的實參前加out關鍵字。
被out修飾的引數在函式內部是需要被賦值的。
可以使用陣列或結構體返回多個資料,也可以使用基本資料型別返回單一資料。
輸出引數傳遞的是指向實參裡儲存內容的地址。
方法內必須對輸出引數賦值,方法需要傳遞出多個資料時使用。
可以使用陣列或結構體返回多個資料,也可以使用基本資料型別返回單一資料。

相關文章