C# ref与out关键字区别

Posted 奔跑的码_农

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# ref与out关键字区别相关的知识,希望对你有一定的参考价值。

ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。
      out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。

案例:

Ref

static int GetIntResult( ref float avg, ref int max, ref int min)
        {
           ......
        }

static void Main(string[] args)
        {
            int[] arr = { 1,2,3,4,5,6,7,8,9};
            float avg=0;//ref参数必须在调用前初始化
            int max=0;
            int min=0;
            int sum = GetIntResult(arr, ref avg, ref max, ref min);
        }

Out

 static int GetIntResult(int[] arry, out float avg, out int max, out int min)
        {
            avg=0;

            max=0;//out关键字必须在方法内初始化;

           min=0;

           ...
            return sum;
        }

static void Main(string[] args)
        {
            int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            float avg;//在使用out关键字时,不需要在此处初始化,初始化也不会影响到方法内部的值,所以你初始化没用
            int max;
            int min;
            int sum = GetIntResult(arr, out avg, out max, out min);
            Console.WriteLine("和:{0}\\t平均值:{1}\\t最大值:{2}\\t最小值:{3}", sum, avg, max, min);
            Console.Read();
        }

 

以上是关于C# ref与out关键字区别的主要内容,如果未能解决你的问题,请参考以下文章

C#:关键字out和ref之间的区别

Ref与Out的区别

C#中out和ref之间的区别

在 C# 中将 REF 和 OUT 关键字与按引用传递和按值传递一起使用

C#同样是引用,ref和out到底有什么区别?

C# 初识Ref和Out