C#值傳遞與引用傳遞

來源:互聯網
上載者:User

標籤:值傳遞   引用傳遞   堆地址   棧地址   

知識點:

       值類型和參考型別

       對於值類型來說,棧中儲存的是直接使用的資料

       對於參考型別來說,棧中儲存的是堆中對象的地址


       值傳遞和引用傳遞

       對於值傳遞,傳遞的是棧中儲存的資料

       對於引用傳遞,傳遞的是棧本身的地址


先看一下值傳遞(傳遞值類型和參考型別)   

class Program{    static void Main(string[] args)    {        //參考型別的賦值,只是賦值了對象在堆中的地址        Person p = new Person();   //聲明的一個Person類,包含有Name屬性        p.Name = "yzk";        D2(p);        Console.WriteLine(p.Name);   //傳回值為jk        //實值型別的賦值,賦值了具體的值,而不是地址        int n = 10;        D1(n);        Console.WriteLine(n);       //傳回值為10        Console.ReadKey();    }    //實值型別的值傳遞    static void D1(int m)    {        m = m + 1;    }    //參考型別的值傳遞    static void D2(Person p1)    {        p1.Name = "jk";    }}
圖解:


再看一下引用傳遞(傳遞值類型和參考型別)   

class Program    {        static void Main(string[] args)        {            Person p = new Person();   //聲明的一個Person類,包含有Name屬性            p.Name = "jk";            D2(ref p);      //引用傳遞:傳遞的是棧本身的地址            Console.WriteLine(p.Name);   //傳回值sk            int n = 10;            D1(ref n);       //引用傳遞:傳遞的是棧本身的地址            Console.WriteLine(n);   //傳回值11            Console.ReadKey();        }        //實值型別的引用傳遞        static void D1(ref int a)  //ref就是表示引用傳遞        {            a = a + 1;        }        //參考型別的引用傳遞        static void D2(ref Person per)        {            per = new Person();            per.Name = "sk";        }    }
圖解



C#值傳遞與引用傳遞

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.