c#传值--out,ref

前言

  今天我们来了解一下out和ref。他们都是传值的,可以返回多个返回值,但是两者的区别您知道吗?

out

  如果方法的参数用out修饰了,那么这个参数必须在方法里进行赋值,参数加out,是把这个方法中的参数的值传到方法外面去了

static void Main(string[] args)
        {
            //即使此处赋值,但是结果仍是10,20;因为out又对其进行了重新赋值
            int number1 = 100;
            int number2 = 200;

            int sum = SumNumber(out number1, out number2);

            Console.WriteLine("{0},{1}", number1, number2);
            Console.ReadKey();

        }

public static int SumNumber(out int num1,out int num2)//out
        {
            //此处不能注释,out需要在方法内赋值,它的值可以传出去
            num1 = 10;
            num2 = 20;
            return num1 + num2;

        }

  运行出的结果number1和number2的结果为10,20。

ref

  用的时候必须要给这个变量赋初值。和out有区别,out可以把方法的值传出去,ref,可以把值传到方法里,又可以把值传到方法外

static void Main(string[] args)
        {
            //这两行代码不能注释,ref需要在方法外赋值
            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 SumNumber(out int num1,out int num2)//out
        {
            //如果这两行代码注释了的话,不会报错,ref可以在方法外赋值,最终结果是10,20,30;如果不注释,最终结果是100,200,300
            num1 = 100;
            num2 = 200;
            return num1 + num2;

        }

总结

  这样大家有没有很清楚呢?out必须在方法内赋值,然后把他的值传出去;而ref需要在方法外赋值。

猜你喜欢

转载自blog.csdn.net/m0_37508531/article/details/80264405
今日推荐