C# 傳值關鍵字Ref 與 Out 之比較

最近也研究了Ref 與Out 關鍵字在做方法入參時的區別, 現在寫出來以備:

在C# 中, 我們可以通過值[By Value]也可以通過引用[By Reference]傳遞參數。通過引用傳遞參數允許函數成員更改參數的值,並保持該更改。若要通過引用傳遞參數, 可使用 ref out 關鍵字。ref和out這兩個關鍵字能夠提供相似的功效,其作用也很像C中的指針變量。它們的區別是:

1. 使用ref和out時,在方法的參數和執行方法時,都要加Ref或Out關鍵字。以滿足匹配。

2. 使用ref型參數時,傳入的參數必須先被初始化。對out而言,必須在方法中對其完成初始化。
3. out適合用在需要retrun多個返回值的地方,而ref則用在需要被調用的方法修改調用者的引用的時候。

PS:  在C#中,有四種類型來做參數傳遞給方法的:傳值(by value),傳址(by reference),輸出參數(by output),數組參數(by array)。

其中, 傳值參數無需額外的修飾符,傳址參數需要修飾符ref,輸出參數需要修飾符out,數組參數需要修飾符params。傳值參數在方法調用過程中如果改變了參數的值,那麼傳入方法的參數在方法調用完成以後並不因此而改變,而是保留原來傳入時的值。傳址參數恰恰相反,如果方法調用過程改變了參數 的值,那麼傳入方法的參數在調用完成以後也隨之改變。實際上從名稱上我們可以清楚地看出兩者的含義--傳值參數傳遞的是調用參數的一份拷貝,而傳址參數傳 遞的是調用參數的內存地址,該參數在方法內外指向的是同一個存儲位置。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章