C#中OUT的用法

参考:https://www.cnblogs.com/huangxuQaQ/p/10726513.html

1.不用Out的示例:

static void Main(string[] args)
        {
            int[] nums = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            int[] result = GetMaxMinSumAvg(nums);
            Console.WriteLine("Max-{0},Min-{1},Sum-{2},Avg-{3}", result[0], result[1], result[2], result[3]);
            Console.ReadKey();
        }

        //返回数组中最大值,最小值,总和,平均值,此时4个返回值所以声明一个数组
        public static int[] GetMaxMinSumAvg(int[] nums)
        {
            //假设res[0]最大值,res[1]最小值,res[2]总和,res[3]平均值
            int[] res = new int[4];
            res[0] = nums[0];//max
            res[1] = nums[0];//min
            res[2] = 0;//sum
            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;
        }

2.Out示例1

    返回值类型不同时怎么办?

    out参数:返回值多个,不限类型

        注意事项:

  •   调用方法之前,对out参数传递的变量只需声明,可以赋值也可以不赋值,赋值也会在方法中被覆盖掉
  •   使用out参数传递变量时,必须在方法内为其赋值,否则return的返回值没有意义
  •   方法的参数使用out修饰时,调用该方法时也要加上out关键字
  •   使用out修饰的变量不需要return      
static void Main(string[] args)
        {
            int[] nums = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            int max;
            int min;
            int sum;
            int avg;
            string s;
            Test(nums, out max, out min, out sum, out avg, out s);
            Console.WriteLine(max);
            Console.WriteLine(min);
            Console.WriteLine(sum);
            Console.WriteLine(avg);
            Console.WriteLine(s);
            Console.ReadKey();
        }

        public static void Test(int[] nums, out int max, out int min, out int sum, out int avg, out string s)//5个out参数修饰的是多余的返回值
        {
            //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;
            //此方法void无返回值,无需写return
            s = "Test_Result";
        }

3.Out示例2

static void Main(string[] args)
        {
            int n;
            bool b = MyTryParse("123", out n);
            Console.WriteLine(b);
            Console.WriteLine(n);
            Console.ReadKey();
        }

        public static bool MyTryParse(string s, out int result)
        {
            result = 0;
            try
            {
                result = Convert.ToInt32(s);
                return true;
            }
            catch
            {
                return false;
            }
        }
发布了60 篇原创文章 · 获赞 11 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/mianyao1004/article/details/104390700