C#中參數值傳遞和址傳遞


概論

   我認為的形參和實參是這樣的,形參是形式上的參量,和“抽象類”的概念差不多,不是實際存在的。不用的時候不占用內存,被調用的時候分配內存,調用結束,釋放內存。類似於“抽象類”還有一點就是在抽象類方法和屬性被應用的時候需要實例化,然而形參在用的時候必須有實參的傳遞。實參就是實際存在的東西,它在應用的時候一些具有確定的值,可以通過賦值、輸入等一系列動作讓實參獲得確定值。流向是這樣的:“實參——>形參(單向傳送)”。

區別

1、形參變量只有在被調用的時候才會分配內存,在調用結束的時候,即刻釋放所分配的內存單元。因此,形參只有在函數內部有效,函數調用結束后返回主調函數后則不能再使用形參變量。

2、實參可以是常量、變量、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,他們都必須具有確定的值,以便把這些值傳送給形參。因此需要預先給用賦值,輸入等方法讓實參獲得確定值。

如下圖:  

                                         

 

3、實參和形參在數量上、類型上、順序上應嚴格一致,否則會發生“類型不匹配”的錯誤。

4、函數調用中發生的數據傳遞是單向的,即只能把實參的值傳送給形參,而不能把形參的值反向傳遞給實參。因此在函數調用過程中,形參的值發生改變,而實參的值不會變化。

“值”與“址”

   在C#中,形參和實參這里也涉及到了“值傳遞”和“地址傳遞”

其中重要的是:

值傳遞:就是形參改變,不會影響實參的變化。

地址傳遞:形參的更改影響實參。

傳值的過程中:

1)  形參和實參各自占一個獨立的存儲空間。

2)  形參的存儲空間是被調用的時候才分配的,調用開始,系統為形參開辟了一個臨時的存儲區,然后將各實參之值傳遞給形參,這時形參就得到了實參的值。

3)  當函數被返回時,臨時存儲區也被撤銷了。

4)  傳值的特點:單向傳遞,即函數中對形參變量的操作不會影響到調用函數中的實參變量。

傳地址過程中:

   參數是地址,實參和形參共享一個存儲單元相當於將實參的地址賦予給了形參,這時候對形參的改變就相當於對實參的改變。此時的參數傳遞是雙向傳遞。

結語

   在C#的學習中,值與址的傳遞尤為重要,對后續的軟件開發中編碼階段提供了很好的保證,在避免異常的同時也提高了效率。C#沒有Java語言簡潔,但是在代碼方面很是嚴謹。為后續軟件的長期使用打好了基礎。以上是本人的一些了解,菜鳥一枚,如有不對的地方,望大神斧正~

 

  

 


免責聲明!

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



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