C#中out关键字

131 阅读1分钟

简介

在C#中可以使用out关键字,指定所给的参数是一个输出参数。out关键字的使用方式与ref关键字相同,都是在函数定义和函数调用中用作参数的修饰符。

一个使用out关键字的例子

 internal class Program
    {
        static void Main(string[] args)
        {
            int[] arr = { 2, 4, 6, 8, 10, 13 };
            int max,min;
            double average;
            average = CalculateAverage(arr, out max, out min);
            Console.WriteLine($"The Max is {max}");
            Console.WriteLine($"The Min is {min}");
            Console.WriteLine($"The Average is {average}");
​
        }
        static double CalculateAverage(int[] arr, out int maxVal, out int minVal)
        {
            maxVal = arr[0];
            minVal = arr[0];
            double sum = 0;
            double average = 0;
            for(int i = 0;i < arr.Length;i ++)
            {
                sum += arr[i];
                if (arr[i] > maxVal) 
                { 
                    maxVal = arr[i];
                }
                if (arr[i] < minVal)
                {
                    minVal = arr[i];
                }
            }
            average = sum / arr.Length;
            return average;
        }
    }

运行结果,如下图所示:

image-20231102204104348

实际上,out的执行方式与引用参数几乎完全一样,因为在函数执行完毕后,该参数的值将返回给函数调用中使用的变量。

但是二者还是存在一些重要的区别:

1、把未赋值的变量用作ref参数是非法的,但可以把未赋值的变量用作out参数。

2、在使用out参数时,必须把它看成尚未赋值。

参考书籍

《C#入门经典(第7版)》——Benjamin Perkins、Jacob Vibe Hammer、Jon D. Reid