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

相关文章
相关标签/搜索