使用值引數,通過複製實參的值到形參的方式,把資料傳遞到方法,方法被呼叫的時候,系統做如下操作:
在棧中為形參分配空間;
複製實參到形參。
注意:乙個值引數的實參不一定是變數,它可以是任何能夠計算成相應資料型別的表示式。
在把變數用作實參之前,變數必須被賦值(除非是輸出引數,這個稍後介紹),對於引用型別,變數可以設定成實際引用或者null。
注意:對於值引數,系統在棧上為形參分配記憶體,相反對於引用引數:
形參的引數名,看起來就好象是實參變數的別名,也就是說,他們指向的是相同的記憶體位置。
由於形參名和實參名的行為,就好象指向相同的記憶體位置,所以在方法的執行過程中,對形參作的任何改變,在方法完成後依然有效(表現在實參變數上)。
注意:在方法的宣告和呼叫上都使用關鍵字ref.
輸出引數用於從方法體內,把資料傳出到呼叫**,他們非常類似引用引數,輸出引數的要求如下:
必須在宣告和呼叫中都使用修飾符。輸出引數的修飾符是out而不是ref.
和引用引數類似,實參必須是變數,而不能是其他型別的表示式。這也是有道理的,因為方法需要記憶體位置來儲存返回值。
就像引用引數,輸出引數的形參擔當實參的別名。方法內對形參的任何改變,在方法執行完成後,通過實參變數都是可見的。
不同的是,輸出引數的要求是:
在方法內部,輸出引數在被讀取之前必須被賦值。這意味著,引數的初始值是無關的,而且沒有必要在方法呼叫之前為實參賦值;
在方法返回之前,方法內部的任何貫穿路徑的可能路徑,都必須為所有輸出引數進行一次賦值。
C 值引數 引用引數和輸出引數
一 值引數 在使用引數時,是把乙個值傳遞給函式使用的乙個變數。對函式中此變數的任何修改都不會影響函式呼叫中指定的引數。由於函式只有乙個返回值,不能用作引數的多個變數值 二 引用引數 即函式處理的變數與函式呼叫中使用的變數相同,而不僅僅是值相同的變數。因此,對這個變數的任何改變都會影響用作引數的變數值...
形參,實參,值引數,引用引數
using system using system.collections.generic using system.linq using system.text using system.threading.tasks namespace deledemo class program static...
C 值引數和引用引數
未用ref或out修飾符宣告的引數為值引數。使用值引數,通過將實參的值複製到形參的方式,把資料傳遞到方法。方法被呼叫時,系統做如下操作。值引數的實參不一定是變數。它可以是任何能計算成相應資料型別的表示式。看乙個例子 float func1 float val 宣告方法 下面來呼叫方法 float f...