C# 之實值型別與參考型別參數[基礎]

來源:互聯網
上載者:User

 

根據參數類型和傳遞方式,有以下4種不同的情況:
實值型別參數的按值傳遞;                    (int m)

參考型別參數的按值(地址值)傳遞;  (string str)

實值型別參數的按引用傳遞;                (ref int m)

參考型別參數的按引用傳遞;            (ref string str)

 

實值型別與參考型別參數

class Demo
    {
        static void Main(string[] args)
        {
            int n = 100;
            string str = "One";

            ChangeByValue(ref n);  //  實值型別:ref 傳遞的是變數 n 的地址(即:實值型別的地址)
            ChangeByRef(ref str);  //參考型別:ref 傳遞的是變數 str 的地址(即:引用的引用)

            Console.WriteLine(n);
            Console.WriteLine(str);
        }
        private static void ChangeByValue(ref int m)
        {
            m = 200;  //實際上改變的是變數 n 的值
        }
        private static void ChangeByRef(ref string s)
        {
            s = "Two";
        }

        //通過,參數帶ref(或out),與不帶ref(或out)的方法能實現方法的重載
        private static void ChangeByRef(string s)
        {
            s = "Two";
        }

        // 報錯:不能定義僅在 ref 和 out 上有差別的重載方法。
        // 原因:在MSIL中, ref 和 out 是同一類型。
     /* private static void ChangeByRef(out string s)
        {
            s = "Two";
        }
     */ 
    }

相關文章

聯繫我們

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