C#值參數、引用參數和輸出參數


  一、值參數:在使用參數時,是把一個值傳遞給函數使用的一個變量。對函數中此變量的任何修改都不會影響函數調用中指定的參數。(由於函數只有一個返回值,不能用作參數的多個變量值)。

  二、引用參數:即函數處理的變量與函數調用中使用的變量相同,而不僅僅是值相同的變量。因此,對這個變量的任何改變都會影響用作參數的變量值。需用ref關鍵字指定參數。用作ref參數的變量有兩個限制,由於函數可能會改變引用參數的值,所有必須在函數調用中使用“非常量”變量。其次,必須使用初始化過的變量。

  三、輸出參數:out關鍵字,指定所給定的參數是一個輸出參數。Out關鍵字的使用方式與ref關鍵字相同,實際上,他的執行方式與引用參數完全一樣,因為在函數執行完畢后,該參數的值將返回給函數調用中使用的變量。

  四、引用參數和輸出參數的一些重要區別:

  1. 把未賦值的變量用作ref參數是非法的,但可以把未賦值的變量用作out參數。
  2. 另外,在函數使用out參數時,必須把它看成是尚未賦值。即調用代碼可以把已賦值的變量用作out參數,但存儲在該變量中的值會在函數執行時丟失。

  下面通過三個方法分別對三種參數傳遞進行說明:

     static void AMethod(int i)//值傳遞
        {
            i = i + 1;
        }
        static void BMethod(ref int i)//引用傳遞
        {
            i = i + 1;
        }
        static void CMethod(out int i, out string j)//輸出傳遞
        {
            i = 6;//輸出參數函數必須在函數內部進行初始化賦值
            j = "return";
        }
        static void Main(string[] args)
        {
            int i = 1; string j = "C#";//輸出參數賦值
            AMethod(i);//調用值傳遞函數
            Console.WriteLine("(1)、 i=1;經過AMethod方法(加1),值傳遞之后  i=" + i);
            Console.WriteLine();
            BMethod(ref i);//調用引用傳遞函數
            Console.WriteLine("(2)、 i=1;經過BMethod方法(加1),ref傳遞之后 i=" + i);
            Console.WriteLine();
            CMethod(out i, out j);//調用輸出傳遞函數
            Console.Write("(3)、 i=1;經過CMethod方法(加1),out傳遞之后 ");
            Console.WriteLine("i=" + i + " j=" + j); Console.WriteLine();
            Console.ReadKey();
        }

  結果如下顯示:

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM