C#中Out和Ref參數修飾符

來源:互聯網
上載者:User

標籤:style   color   ar   strong   sp   c   on   r   ef   

 

在編程過程中對於函數之間的參數的傳遞一般分為兩種:傳值和傳地址。下面為大家分析一下。


傳值


比如你又一份文檔,如果採用傳值的話,相當於我複製了一份,因此我對我這份文檔的修改都不會影響到你的那份。如果你對這句話瞭解的話,那麼就簡單了。


下面看一個小Demo。


<span style="font-family:SimSun;font-size:18px;"> static void Main(string[] args)        {            //定義一個變數            int val=1 ;            //調用方法            Method(val);            Console.WriteLine(val); //最後輸出結果還是1        }        static void Method( int i)        {            //這是我的那份文檔的複製品            //無論我如何修改,都影響不到你的            i = i+ 44;            Console.WriteLine(i); //我的文件的輸出結果是45        }</span>



傳址引用


還是你又一份文檔,只不過如果採取傳值引用的話,我們兩個人共用這份文檔,那麼可想而知,無論誰操作都會影響到最後的顯示


Ref關鍵字


還是上面的那個Demo,如果換成Ref關鍵字,效果如下


<span style="font-family:SimSun;font-size:18px;">  static void Main(string[] args)        {            //定義一個變數            int val=1 ;            //調用方法            Method( ref val);            Console.WriteLine(val); //最後輸出結果是45        }        //按照傳引用調用        static void Method(ref int i)        {            //倆人共用文檔,所以我做的修改            //都會在最後呈現            i = i+ 44;                   }</span>


Out關鍵字


近來再編程過程中又遇到了Out關鍵字,與Ref的功能相當,都是傳值引用,區別在於Ref在傳遞之前,需要對文檔進行初始化。還是上面的例子,看一下效果


<span style="font-family:SimSun;font-size:18px;">  static void Main(string[] args)        {            //定義一個變數            int val ;//與Ref的區別在於,在此可以不進行初始化            //調用方法            Method( out val);            Console.WriteLine(val); //最後輸出結果是44        }        //按照傳引用調用        static void Method(out int i)        {                       //i = i+44;//這句話會報錯            i = 44;                   }</span>


Ref與Out的區別

     第一:還是兩份文檔,只不過採取Ref方式的話,你不能給我一份空文檔,而Out則可以允許你給我一份空文檔。

     第二:採取Ref方式,我可以直接對參數進行+、-等操作,而Out方式則必須先賦值,才能進行相應操作。



 

C#中Out和Ref參數修飾符

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.