c# 方法的參數傳遞機制

來源:互聯網
上載者:User
一、參數的使用方法:
    1、值參數(Value Parameter )
        格式:方法名稱(參數類型 參數名稱[,參數類型 參數名稱])

    2、引用參數(Reference Parameter )
        格式:方法名稱(ref 參數類型 參數名稱[,ref 參數類型 參數名稱])

    3、輸出參數(Out Parameter)
        格式:方法名稱(out  參數類型 參數名稱[,out  參數類型 參數名稱])

二、值參數與引用參數及輸出參數的區別:
    2.1 值參數中實參的值不隨形參值變更而變更;
          形參與實參值互不影響,實參傳遞給形參時,堆棧中就為其分配另外一部分空間。這樣,兩個參數變更時而互不影響。
    2.2 引用參數及輸出參數中實參的值會隨形參值變更而變更
         (形參:在定義函數中指定的形參,在未出現函數調用時,它們並不佔記憶體中的儲存單元.只有在發生函數調用時,函數中形參才被分配記憶體單元.在調用結束後,形參所佔的記憶體單元也被釋放。調用時將實參的值賦紿形參);
          引用參數與輸出參數中,實參在堆棧中分配空間。當實參傳遞給形參時,會將地址傳遞給形參,即傳送的時指針,這樣形參變更時,實參也會隨著變更。

三、引用參數與輸出參數區別:
     3.1 使用ref與out參數時,方法中參數及調用參數都需要加Ref或out關鍵字
     3.2 使用ref參數與out參數得到的結果是一樣的,區別是:ref在調用前需給調用方法中的參數賦初值。out在調用前不需給調用方法中的參數賦初值,參數在實際方法體中初始化。

四:查看代碼

如:下面代碼中各個參數的結果:using System;
class mahod
{
    public static void ValueMethod(int i)
    {
        i++;
    }
    public static void ReferenceMehtod(ref int i)
    {
        i++;
    }
    public static void OutMethod(out int j)
    {
        j=0;
        j++;
    }
    
    static void Main()
    {
        int i=0;
        ValueMethod(i);
        Console.WriteLine("i="+i);
        int j=0;
        ReferenceMehtod(ref j);
        Console.WriteLine("j="+j);
        int k;
        OutMethod(out k);
        Console.WriteLine("k="+k);
        
        Console.ReadLine();
    }
}

聯繫我們

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