C#方法參數--值參數,引用參數,輸出參數


值參數:

使用值參數,通過復制實參的值到形參的方式,把數據傳遞到方法,方法被調用的時候,系統做如下操作:

在棧中為形參分配空間;

復制實參到形參。

注意:一個值參數的實參不一定是變量,它可以是任何能夠計算成相應數據類型的表達式。

在把變量用作實參之前,變量必須被賦值(除非是輸出參數,這個稍后介紹),對於引用類型,變量可以設置成實際引用或者Null。

 

引用參數:

  • 使用引用參數時,必須在方法的申明和調用中都使用關鍵字ref修飾符。
  • 實參必須是變量,在用作實參前必須被賦值。如果是引用類型的變量,可以賦值為一個引用或者null值。

 

注意:對於值參數,系統在棧上為形參分配內存,相反對於引用參數:

形參的參數名,看起來就好象是實參變量的別名,也就是說,他們指向的是相同的內存位置。

由於形參名和實參名的行為,就好象指向相同的內存位置,所以在方法的執行過程中,對形參作的任何改變,在方法完成后依然有效(表現在實參變量上)。

注意:在方法的聲明和調用上都使用關鍵字ref.

 

 

輸出參數

輸出參數用於從方法體內,把數據傳出到調用代碼,他們非常類似引用參數,輸出參數的要求如下:

必須在聲明和調用中都使用修飾符。輸出參數的修飾符是out而不是ref.

和引用參數類似,實參必須是變量,而不能是其他類型的表達式。這也是有道理的,因為方法需要內存位置來保存返回值。

就像引用參數,輸出參數的形參擔當實參的別名。方法內對形參的任何改變,在方法執行完成后,通過實參變量都是可見的。

不同的是,輸出參數的要求是:

在方法內部,輸出參數在被讀取之前必須被賦值。這意味着,參數的初始值是無關的,而且沒有必要在方法調用之前為實參賦值;

在方法返回之前,方法內部的任何貫穿路徑的可能路徑,都必須為所有輸出參數進行一次賦值。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM