c# ref与out用法

 class Program
    {
        static void Main(string[] args)
        {
            //普通 :
            int k1 = 1;
            int result1 = Test1(k1, 2);
            Console.WriteLine("/*普通:*/");
            Console.WriteLine(result1);
            Console.WriteLine(k1);

            //ref :
            //用法: 参数要用 ref 一起传递,并且是可以赋值的变量,ref 变量要先赋值
            int k2 = 1;
            int result2 = Test2(ref k2, 2);
            Console.WriteLine("/*ref:*/");
            Console.WriteLine(result2);
            Console.WriteLine(k2);

            //out :
            //用法: 参数要用 out 一起传递,并且是可以赋值的变量,out 变量不用先赋值(只定义即可)
            int k3;
            Console.WriteLine("/*out:*/");
            int result3 = Test3(out k3, 2);
            Console.WriteLine(result3);
            Console.WriteLine(k3);
        }

        /// <summary>
        /// 普通
        /// </summary>
        public static int Test1(int k, int p)
        {
            k++;
            return k + p;
        }

        /// <summary>
        /// ref
        /// </summary>
        public static int Test2(ref int k, int p)
        {
            k++;
            return k + p;
        }

        /// <summary>
        /// out
        /// </summary>
        public static int Test3(out int k, int p)
        {
            //out 未赋值的变量不能使用,所以在方法内部赋值。
            k = 1 + 1;
            return k + p;
        }
    }
View Code

运行结果:

原文地址:https://www.cnblogs.com/SeNaiTes/p/10286025.html