c#中关键词out和ref的区别

c#中关键词out和ref用来表明以传引用的方式传递参数。

区别如下:

如果方法的参数用out标记,表示方法被调用前不需初始化参数,方法内不能读取此参数的值,在方法返回前必须向此参数写入值;

如果方法的参数用ref标记,表示方法被调用前必须初始化参数,在方法内部可以读取或者读写此参数,也可不对此参数做任何处理。

out事例:

class Program
    {
        static void Main(string[] args)
        { 
            int val;  //无需初始化
            GetValue(out val);
            Console.WriteLine(val);
        }

        public static void GetValue(out int a)
        {
            a = 20; //必须赋值
        }       
    }

最后val的输出值为20

ref事例:

class Program
    {
        static void Main(string[] args)
        { 
            int val=5; //必须初始化
            GetValue(ref val);
            Console.WriteLine(val);
        }

        public static void GetValue(ref int a)
        {
            a += 20;  //可以读写,也可不对此参数做任何处理
        }       
    }

最后val的输出值为25

注:上面的两个例子,我操作的都是的值类型,对于引用类型,一样可以使用out和ref关键词。