【C#视频】——输出参数

out关键字的使用方式与ref关键字相同(在函数定义和函数调用中用作参数的修饰符),实际上,它的执行方式与引用参数完全一样,因为在函数执行完毕后,该参数的值将返回给函数调用中使用的变量,但是,还是有一些重要的区别:

  1. 把未赋值的变量用作ref参数是非法的,但可以把未赋值的变量用作out参数。
  2. 另外,在函数使用out参数时,该参数必须看做是还未赋值。即调用代码可以把已赋值的变量用作out参数,存储在该变量中的值会在函数执行时丢失。


ref

        static void Main(string[] args)
        {           
           //ref必须要给这个变量赋初值,和out有区别,out可以把方法里的值传出去,
           //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 Show(ref int num1,ref int num2)
        {
            //num1 = 100;
            //num2 = 200;
            return num1 + num2;
         }

输出:10,20,30

        static void Main(string[] args)
        {           
           //ref必须要给这个变量赋初值,和out有区别,out可以把方法里的值传出去,
           //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 Show(ref int num1,ref int num2)
        {
            num1 = 100;
            num2 = 200;
            return num1 + num2;
         }

输出:100,200,300


out

        static void Main(string[] args)
        {
            //如果方法的参数用out修饰,那么这个参数必须在方法里进行赋值

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

            Console.WriteLine(number1);
            Console.WriteLine(number2);
            Console.WriteLine(sum);
            Console.ReadKey();
        }

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

输出:100,200,300

        static void Main(string[] args)
        {
            //如果方法的参数用out修饰,那么这个参数必须在方法里进行赋值

            int number1 = 10;//不一定要赋值
            int number2 = 20;//不一定要赋值
            int sum = AddNumber(out number1, out number2);

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

            Console.ReadKey();
        }

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

输出:100,200,300
【传多个返回值的方法】

        static void Main(string[] args)
        {
            //ref必须要给这个变量赋初值,和out有区别,out可以把方法里的值传出去,
            //ref 可以把值传到方法里,也可以把值传到方法外
            int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            int max;
            int min;
            int sum=ArraySum(nums,out max,out min);

            Console.WriteLine("{0},{1},{2}",max,min,sum);            
            Console.ReadKey();
        }

        public static int ArraySum(int[] numbers,out int max,out int min)
        {
            max = int.MinValue;
            min = int.MaxValue;
            int sum = 0;
            for (int i = 0; i < numbers.Length ; i++)
            {
                if (numbers[i]>max)
                {
                    max = numbers[i];
                }
                if (numbers[i]<min)
                {
                    min = numbers[i];
                }
                sum += numbers[i];
            }
            return sum;
        }

输出:9,1,45

猜你喜欢

转载自blog.csdn.net/mirabellezwh/article/details/80648239
今日推荐