Hellow C# unity學習記錄(7)值型別引用型別以及引數傳遞
此部落格用來記錄一下學習的知識點
堆空間和棧空間
棧
系統分配記憶體,自動回收記憶體。
空間比堆空間小。
存取速度比堆空間快。
資料的儲存,先進後出。
堆
手動申請與釋放記憶體(C#中自動釋放)。
空間比棧空間大。
存取速度比棧空間慢。
值型別
值型別定義的變數時儲存在棧中的。
引用型別
引用型別定義的變數,具體的值存在堆中,指向堆中資料的地址存在棧中。
引數傳遞
形參
值傳遞:發生在值型別互相賦值之間,傳遞的是具體的值。
實參
實際引數是呼叫方法時,填入引數列表的引數,有實際的值。
值引數
複製實參的內容傳遞的方法,並不會改變本值。
引用型別引數
複製實參的地址傳遞到引用方法
ref與out關鍵字
ref
方法定義時,形參列表裡引數新增ref關鍵字的引數為引用引數。
呼叫方法時,引用引數必須在傳遞的實參前加ref關鍵字。
變數如果使用ref進行傳參,必須先賦值。
引用引數傳遞的是指向實參裡儲存內容的地址。
方法內可以影響實參裡的儲存。
out
方法定義時,形參列表裡引數前加out關鍵的引數為輸出引數。
呼叫方法時,引用引數必須在傳遞的實參前加out關鍵字。
被out修飾的引數在函式內部是需要被賦值的。
可以使用陣列或結構體返回多個資料,也可以使用基本資料型別返回單一資料。
輸出引數傳遞的是指向實參裡儲存內容的地址。
方法內必須對輸出引數賦值,方法需要傳遞出多個資料時使用。
可以使用陣列或結構體返回多個資料,也可以使用基本資料型別返回單一資料。
相關文章
- C#程式設計引用型別和值型別 以及引用傳遞和值傳遞C#程式設計型別
- C#學習筆記之值型別與引用型別C#筆記型別
- c#:值型別&引用型別C#型別
- C#變數型別(1):引用型別和值型別 (轉)變數型別
- C#的型別——值型別與引用型別C#型別
- Hellow C# unity學習記錄(8)函式的遞迴C#Unity函式遞迴
- 【C#之值型別vs引用型別】C#型別
- C# 物件比較(值型別、引用型別)C#物件型別
- C# 泛型 引用型別約束 值型別約束C#泛型型別
- 值型別和引用型別型別
- 值型別與引用型別型別
- JavaScript值型別和引用型別JavaScript型別
- Swift值型別和引用型別Swift型別
- 值型別與引用型別的區別型別
- JavaScript - 基本型別與引用型別值JavaScript型別
- 圖解C#的值型別,引用型別,棧,堆,ref,out圖解C#型別
- Python 序列型別以及函式引數型別Python型別函式
- Structs vs classes(值型別vs引用型別)Struct型別
- C#引用型別和值型別在堆、棧中的儲存C#型別
- map 型別 - Go 學習記錄型別Go
- VB.NET 對於型別的傳遞按值或者按引用型別
- 【Mysql 學習】數值型別轉換MySql型別
- 區別值型別資料和引用型別資料型別
- Swift-Optional Binding引發的值型別與引用型別的思考Swift型別
- Mysql資料庫學習(二):資料型別(數值型別 日期和時間型別 字串型別)MySql資料庫資料型別字串
- javascript函式引數引用型別傳遞其實也是一個複製過程JavaScript函式型別
- 資料型別 - Go 學習記錄資料型別Go
- C#引數傳遞之值引數C#
- Swift 中的值型別與引用型別使用指北Swift型別
- 從賦值看基本型別和引用型別的區別賦值型別
- Python引用型別和值型別的區別與使用Python型別
- 【C#學習筆記】型別轉換C#筆記型別
- javascript原始值和引用值型別及區別JavaScript型別
- js中函式引數值傳遞和引用傳遞JS函式
- 基本資料型別和引用型別的初始值資料型別
- Java引數傳遞是傳值還是傳引用?Java
- mybatis sql String>Double, 型別引數被強轉為數值型別MyBatisSQL型別
- JavaScript引用型別-Object型別JavaScript型別Object