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

 值傳遞 spa

 C#默認都是值傳遞的,就是複製變量的一個副本傳遞給方法,因此在退出方法後,對變量的修改無效。orm

可是要注意,當傳遞是引用類型時,由於引用類型是一個引用的地址,因此修改引用地址指向的對象時,同樣會修改對象的值,這種現象不能當作引用傳遞對象

 引用傳遞blog

 引用傳遞是對象自己傳遞給方法,當在方法中對對象作修改時,退出方法後修改是有效的,在C#中引用傳遞須要在參數類型前加關鍵字 ref ,可是ref 的參數變量在使用前必須被初使化,可有時經過引用傳遞的變量初值是沒意義的,這容易產生混淆,這時在C#中有另外一關鍵字 out ,out 與 ref 關鍵字使用時效果同樣,可是out關鍵字對變量能夠不初使化,可是out關鍵字的變量在方法中必須給分配一個值,不然編譯會不經過string

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= 20it

      i=20編譯

      j=20class

相關文章
相關標籤/搜索