Hellow C# unity學習記錄(7)值型別引用型別以及引數傳遞
此部落格用來記錄一下學習的知識點
堆空間和棧空間
棧
系統分配記憶體,自動回收記憶體。
空間比堆空間小。
存取速度比堆空間快。
資料的儲存,先進後出。
堆
手動申請與釋放記憶體(C#中自動釋放)。
空間比棧空間大。
存取速度比棧空間慢。
值型別
值型別定義的變數時儲存在棧中的。
引用型別
引用型別定義的變數,具體的值存在堆中,指向堆中資料的地址存在棧中。
引數傳遞
形參
值傳遞:發生在值型別互相賦值之間,傳遞的是具體的值。
實參
實際引數是呼叫方法時,填入引數列表的引數,有實際的值。
值引數
複製實參的內容傳遞的方法,並不會改變本值。
引用型別引數
複製實參的地址傳遞到引用方法
ref與out關鍵字
ref
方法定義時,形參列表裡引數新增ref關鍵字的引數為引用引數。
呼叫方法時,引用引數必須在傳遞的實參前加ref關鍵字。
變數如果使用ref進行傳參,必須先賦值。
引用引數傳遞的是指向實參裡儲存內容的地址。
方法內可以影響實參裡的儲存。
out
方法定義時,形參列表裡引數前加out關鍵的引數為輸出引數。
呼叫方法時,引用引數必須在傳遞的實參前加out關鍵字。
被out修飾的引數在函式內部是需要被賦值的。
可以使用陣列或結構體返回多個資料,也可以使用基本資料型別返回單一資料。
輸出引數傳遞的是指向實參裡儲存內容的地址。
方法內必須對輸出引數賦值,方法需要傳遞出多個資料時使用。
可以使用陣列或結構體返回多個資料,也可以使用基本資料型別返回單一資料。
相關文章
- C#程式設計引用型別和值型別 以及引用傳遞和值傳遞C#程式設計型別
- C#學習筆記之值型別與引用型別C#筆記型別
- c#:值型別&引用型別C#型別
- Hellow C# unity學習記錄(8)函式的遞迴C#Unity函式遞迴
- 值型別和引用型別型別
- JavaScript值型別和引用型別JavaScript型別
- C#學習 [型別系統] 記錄(14)C#型別
- 值型別與引用型別的區別型別
- Python 序列型別以及函式引數型別Python型別函式
- JavaScript - 基本型別與引用型別值JavaScript型別
- c#中值型別和引用型別的區別C#型別
- C#引用型別和值型別在堆、棧中的儲存C#型別
- Swift-Optional Binding引發的值型別與引用型別的思考Swift型別
- map 型別 - Go 學習記錄型別Go
- 區別值型別資料和引用型別資料型別
- 從賦值看基本型別和引用型別的區別賦值型別
- 資料型別 - Go 學習記錄資料型別Go
- javascript原始值和引用值型別及區別JavaScript型別
- [python學習手冊-筆記]003.數值型別Python筆記型別
- C#學習 [型別系統] 型別轉換(11)C#型別
- Python的函式引數傳遞:傳值?引用?Python函式
- JavaScript引用型別-Object型別JavaScript型別Object
- Python3學習 (變數+值型別+引用型別+列表的可變+元組的不可變+運算子號)Python變數型別
- C#學習 [型別系統] 基本型別介紹(10)C#型別
- 33 個 JavaScript 核心概念系列(二): 值型別與引用型別JavaScript型別
- C#學習 [型別系統] 泛型(16)C#型別泛型
- String和StringBuffer型別資料進行引數傳遞問題型別
- ECMAScript 原始型別與引用型別型別
- 解析型別引數型別
- js基本型別和引用型別區別JS型別
- golang中 值型別,指標,引用的區別Golang型別指標
- TypeScript 數值型別TypeScript型別
- Python數值型別Python型別
- std::packaged_task<返回型別(引數型別)>Package型別
- C#快速入門教程(9)——浮點數、Decimal型別和數值型別轉換C#Decimal型別
- Go高階特性 13 | 引數傳遞:值、引用及指標之間的區別?Go指標
- Java的基本型別和引用型別Java型別
- C#程式設計:ref【引數按引用傳遞】C#程式設計