1. 程式人生 > >C#:函式傳參 傳值 vs 傳引用

C#:函式傳參 傳值 vs 傳引用

 

概念

 值傳遞 當方法傳遞的引數是值型別時,變數的棧資料會完整地複製到目標引數中,即實參和形參中的資料相同但存放在記憶體中的位置不同。所以,在目標方法中對形參所做的更改不會對呼叫者的初始變數產生任何影響。

  引用傳遞 當方法傳遞的引數是引用型別時,只是將變數的引用複製到目標引數中,實參和形參的引用指向記憶體中的同一位置。所以,在目標方法中對形參所做的更改會影響呼叫者的初始變數。

C#中的特殊引數

(1)引用引數---ref

結構、整數等型別做引數時預設是傳值的;

類、陣列等型別做引數時預設是傳引用的;

在傳值的型別前加上關鍵字ref,並在呼叫時在實參上也加上關鍵字ref,即可改為傳引用。

    

(2)輸出引數---out

     C# 除了傳值、傳引用之外,還可以將資料從一個函式內部單向傳出。

    需要使用關鍵字out來修飾引數型別;

【注】:refout都是傳引用。區別在於,out不接受呼叫者傳來引數的資料值,而是把該引數當做未賦值的引數。


參考文章

1. https://blog.csdn.net/susan19890313/article/details/6841541