一、值引數:在使用引數時,是把乙個值傳遞給函式使用的乙個變數。對函式中此變數的任何修改都不會影響函式呼叫中指定的引數。(由於函式只有乙個返回值,不能用作引數的多個變數值)。
二、引用引數:即函式處理的變數與函式呼叫中使用的變數相同,而不僅僅是值相同的變數。因此,對這個變數的任何改變都會影響用作引數的變數值。需用ref關鍵字指定引數。用作ref引數的變數有兩個限制,由於函式可能會改變引用引數的值,所有必須在函式呼叫中使用「非常量」變數。其次,必須使用初始化過的變數。
三、輸出引數:out關鍵字,指定所給定的引數是乙個輸出引數。out關鍵字的使用方式與ref關鍵字相同,實際上,他的執行方式與引用引數完全一樣,因為在函式執行完畢後,該引數的值將返回給函式呼叫中使用的變數。
四、引用引數和輸出引數的一些重要區別:
把未賦值的變數用作ref引數是非法的,但可以把未賦值的變數用作out引數。
另外,在函式使用out引數時,必須把它看成是尚未賦值。即呼叫**可以把已賦值的變數用作out引數,但儲存在該變數中的值會在函式執行時丟失。
下面通過三個方法分別對三種引數傳遞進行說明:
static結果如下顯示:void amethod(int i)//
值傳遞
static
void bmethod(ref
int i)//
引用傳遞
static
void cmethod(out
int i, out
string j)//
輸出傳遞
static
void main(string
args)
C 值引數和引用引數
未用ref或out修飾符宣告的引數為值引數。使用值引數,通過將實參的值複製到形參的方式,把資料傳遞到方法。方法被呼叫時,系統做如下操作。值引數的實參不一定是變數。它可以是任何能計算成相應資料型別的表示式。看乙個例子 float func1 float val 宣告方法 下面來呼叫方法 float f...
C 方法引數 值引數,引用引數,輸出引數
使用值引數,通過複製實參的值到形參的方式,把資料傳遞到方法,方法被呼叫的時候,系統做如下操作 在棧中為形參分配空間 複製實參到形參。注意 乙個值引數的實參不一定是變數,它可以是任何能夠計算成相應資料型別的表示式。在把變數用作實參之前,變數必須被賦值 除非是輸出引數,這個稍後介紹 對於引用型別,變數可...
形參,實參,值引數,引用引數
using system using system.collections.generic using system.linq using system.text using system.threading.tasks namespace deledemo class program static...