文章出處

 

Ref 把值傳遞變成引用傳遞

當調用一個方法時,傳入的參數是一個值類型,那么需要方法將這個傳入的值類型的變量值改變受到影響,我們可以使用ref 關鍵字進行處理實現。

 

觀察一:

結論:

根據值類型和引用類型的特點,值類型是賦值,是復制傳遞的是棧上存儲的具體值信息,如圖實參變量"a"將100賦值給方法形參"num"變量。那么值類型的改變只會影響值的本身,形參的改變沒有形象到變量"a"。

 

加上ref修飾形參:

 

結論:

通過ref關鍵字,此時傳遞變量a的時候,實參把引用傳給了形參,那么說明了這兩個變量將指向同一個引用地址,變量num在方法中的改變會影響到變量a

輸出結果:101

 

使用ref關鍵字的時候需要注意:

1.用了ref關鍵的方法,必須在參數列表上加上ref關鍵字,在調用該方法的時候也要加上ref關鍵字。

2.作為傳入修飾了ref的方法的實參變量,必須賦初始值

 

 

作用總結:如果想使一個值類型的變量,通過傳入一個方法進行改變,可以使用ref

 

 

 


 

 

OUT 讓方法返回多個值

 

從語法規則上來講,一個方法只能有一個返回值,如果return多個值簡直是天方夜譚,如圖:

 

通過out的方式實現:

  static void Main(string[] args)
        {

            int a ;
            changeNum(out a);
            Console.WriteLine(a); //結果為101
        }

        static stringchangeNum(out int num)
        {
            num = 100;
            num++;    
             return "ok";
        }

 

 

 

使用out關鍵字需要注意:

1.在方法定義和方法調用時,都要加上out關鍵字

2.方法參數列表上修飾了out關鍵字的變量,必須在方法體賦初始值,對于方法調用提供的實參變量可以不需要賦值。

 

 


 

 

面試題

 

ref與out的區別是什么?

使用ref的時候要傳入相應方法的實參變量,必須賦值。而out在調用的時候只用聲明,但是在方法內部,修飾了out形參必須賦值。

ref和out有著異曲同工之妙,都可以實現相同的功能,ref側重于將值類型的值傳遞改變為引用傳遞,out側重于對于一個方法返回多個值

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()