天天看点

【C#】——out和ref区别

   看视频的时候发现关于out和ref之间感觉有点儿乱,两者都是用来传值的,使用后可以改变原来参数的值,但是传值的过程感觉不是很明白,现在整理一下:

  代码①: 

static void Main(string[] args)
        {
            int number1 ;//可以不赋值
            int number2 = 90;
            int sum = AddNumber (out number1,  number2);

            Console.WriteLine(number1 );
            Console.WriteLine(number2);

            Console.WriteLine(sum);
            Console.ReadKey();
        }
        public static int AddNumber(out int num1, int num2)
        {
            num1 = 100;//必须赋值
            num2 = 200;
            return num1 +num2 ;
        }
    }
}
           

   运行结果:

【C#】——out和ref区别

  代码②:

static void Main(string[] args)
        {
            int number1 = 10;
            int number2 = 20;

            int sum = show(ref number1 ,ref number2 );
            Console.WriteLine("{0},{1},{2}", number1, number2, sum);

            Console.ReadKey();
            
        }

        public static int show(ref int num1, ref int num2)
        {
            num1 = 100;
            num2 = 200;
            return num1 + num2;
        }
    }
}
           

  运行结果:

【C#】——out和ref区别

【总结】

   方法的参数用out修饰了,那么这个参数必须在方法里进行赋值,在方法外面可以不给这个参数赋值;

   如果使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字;

   通过对比可以发现ref用的时候必须要给这个变量赋初值,这是和out的区别,out可以把方法里的值传出去,而ref可以把值传到方法里又可以把值传到方法外;