c# 的傳遞參數值傳遞與傳遞引用的區別,ref與out區別


 值傳遞 

 C#默認都是值傳遞的,就是復制變量的一個副本傳遞給方法,所以在退出方法后,對變量的修改無效。

但是要注意,當傳遞是引用類型時,因為引用類型是一個引用的地址,所以修改引用地址指向的對象時,一樣會修改對象的值,這種現象不能當做引用傳遞

 引用傳遞

 引用傳遞是對象本身傳遞給方法,當在方法中對對象做修改時,退出方法后修改是有效的,在C#中引用傳遞需要在參數類型前加關鍵字 ref ,但是ref 的參數變量在使用前必須被初使化,可有時通過引用傳遞的變量初值是沒意義的,這容易產生混淆,這時在C#中有另一關鍵字 out ,out 與 ref 關鍵字使用時效果一樣,但是out關鍵字對變量可以不初使化,但是out關鍵字的變量在方法中必須給分配一個值,否則編譯會不通過

class Program
    {
        static void Main(string[] args)
        {
            var v = new Values();
            int i = 10;
            int j;
            Console.WriteLine(v.a);
            Method.Update(v, ref i, out j);
            Console.WriteLine(string.Format("v.a={0}", v.a));
            Console.WriteLine(string.Format("i={0}", i));
            Console.WriteLine(string.Format("j={0}", j));
            Console.ReadKey();
        }
    }
    public class Values
    {
        public int a = 10;
    }
    public class Method
    {
        public static void Update(Values v, ref int i, out int j)
        {
            v.a = 20;
            i = 20;
            j = 20;
        }
    }

  

 

 輸出值:10

 v.a= 20

      i=20

      j=20

  


免責聲明!

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



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