out参数()

如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组

示例:

using System;

namespace out参数
{
    class Program
    {
        static void Main(string[] args)
        {
            //写一个方法,求一个数组中的最大值、最小值、总和、平均值
            int[] numbers = {1,2,5,8,9,2};
            //将要返回的4个值,放到一个数组中返回
            int[] res= MaxMinSumAvg(numbers);
            Console.WriteLine("最大值是{0},最小值是{1},总和是{2},平均值是{3}",res[0],res[1],res[2],res[3]);
            Console.ReadKey();
        }
        public static int[] MaxMinSumAvg(int[] nums) 
        {
            //假设res[0] 最大值,res[1] 最小值,res[2] 总和,res[3] 平均值
            int[] res = new int[4];
            res[0] = nums[0];
            res[1] = nums[0];
            res[2] = 0;

            for (int i = 0; i < nums.Length; i++)
            {
                //如果当前循环到的元素比我假定的最大值还大
                if (nums[i] >res[0])
                {
                    //将当前循环到的元素赋值给我的最大值
                    res[0] = nums[i];
                }
                if (nums[i] <res[1])
                {
                    res[1] = nums[i];
                }
                res[2] += nums[i];
            }
            res[3] = res[2] / nums.Length;//平均值
            return res;//返回数组
         }
    }
}

但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候我们考虑使用out参数,

out参数:可以在一个方法返回多个不同类型的参数,out表示我要多余返回的那个参数

示例:

using System;

namespace out参数
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] numbers = { 1, 3, 5, 7, 9 };
            //Test函数调用时需要几个int类型的变量实参,但main方法里并没有,所有要定义几个变量作为实参用。       //这几个参数可以不给它赋值,因为out方法里面已经赋过值了。
            int max;
            int min;
            int sum;
            int avg;
            Test(numbers, out max, out min, out sum, out avg);
            Console.WriteLine(max);
            Console.WriteLine(min);
            Console.WriteLine(sum);
            Console.WriteLine(avg);
            Console.ReadKey();
        }
        //这个Test方法并没有返回值,我使用out参数多余返回了4个参数
        public static void Test(int[] nums,out int max,out int min,out int sum,out int avg)
        {
            //out参数要求在方法的内部必须为其赋值、
            max = nums[0];
            min = nums[0];
            sum = 0;
            for (int i = 0; i < nums.Length; i++)
            {
                if (nums[i]>max)
                {
                    max = nums[i];
                }
                if (nums[i]<min)
                {
                    min = nums[i];
                }
                sum += nums[i];
            }
            avg = sum / nums.Length;
        }
    }
}
————————

如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组

示例:

using System;

namespace out参数
{
    class Program
    {
        static void Main(string[] args)
        {
            //写一个方法,求一个数组中的最大值、最小值、总和、平均值
            int[] numbers = {1,2,5,8,9,2};
            //将要返回的4个值,放到一个数组中返回
            int[] res= MaxMinSumAvg(numbers);
            Console.WriteLine("最大值是{0},最小值是{1},总和是{2},平均值是{3}",res[0],res[1],res[2],res[3]);
            Console.ReadKey();
        }
        public static int[] MaxMinSumAvg(int[] nums) 
        {
            //假设res[0] 最大值,res[1] 最小值,res[2] 总和,res[3] 平均值
            int[] res = new int[4];
            res[0] = nums[0];
            res[1] = nums[0];
            res[2] = 0;

            for (int i = 0; i < nums.Length; i++)
            {
                //如果当前循环到的元素比我假定的最大值还大
                if (nums[i] >res[0])
                {
                    //将当前循环到的元素赋值给我的最大值
                    res[0] = nums[i];
                }
                if (nums[i] <res[1])
                {
                    res[1] = nums[i];
                }
                res[2] += nums[i];
            }
            res[3] = res[2] / nums.Length;//平均值
            return res;//返回数组
         }
    }
}

但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候我们考虑使用out参数,

out参数:可以在一个方法返回多个不同类型的参数,out表示我要多余返回的那个参数

示例:

using System;

namespace out参数
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] numbers = { 1, 3, 5, 7, 9 };
            //Test函数调用时需要几个int类型的变量实参,但main方法里并没有,所有要定义几个变量作为实参用。       //这几个参数可以不给它赋值,因为out方法里面已经赋过值了。
            int max;
            int min;
            int sum;
            int avg;
            Test(numbers, out max, out min, out sum, out avg);
            Console.WriteLine(max);
            Console.WriteLine(min);
            Console.WriteLine(sum);
            Console.WriteLine(avg);
            Console.ReadKey();
        }
        //这个Test方法并没有返回值,我使用out参数多余返回了4个参数
        public static void Test(int[] nums,out int max,out int min,out int sum,out int avg)
        {
            //out参数要求在方法的内部必须为其赋值、
            max = nums[0];
            min = nums[0];
            sum = 0;
            for (int i = 0; i < nums.Length; i++)
            {
                if (nums[i]>max)
                {
                    max = nums[i];
                }
                if (nums[i]<min)
                {
                    min = nums[i];
                }
                sum += nums[i];
            }
            avg = sum / nums.Length;
        }
    }
}