当前位置: 代码迷 >> C# >> c# ref与out的差异
  详细解决方案

c# ref与out的差异

热度:381   发布时间:2016-04-28 08:25:02.0
c# ref与out的区别

相同点:都是输出参数

不同点:

ref:

1、必须初始化,即:必须赋初始值;

2.有进有出;

3、用在需要被调用的方法修改调用者的引用的时候。

4、是传递参数的地址

out:

1.不需要初始化,即:不需要赋初始值;

2、只出不进;

3、用在需要retrun多个返回值的地方;

4、返回值;

通过代码更直观的看出它们的区别:

class Program    {        static void Main(string[] args)        {          //num1,num2,必须赋值            int num1 = 10;            int num2 = 5;            Exchage(ref num1,ref num2);//调用方法,必须在变量前,必须加ref关键字                }  /// <summary>        /// 使用ref方法,参数必须加ref关键字        /// </summary>        /// <param name="num1"></param>        /// <param name="num2"></param>        private static void Exchage(ref int num1,ref int num2)        {            //交换前                Console.WriteLine("num1的值:{0};num2的值:{1}", num1, num2);                int temp = num1;                num1 = num2;                num2 = temp;                //交换后                Console.WriteLine("num1的值:{0};num2的值:{1}", num1, num2);                Console.ReadKey();        }

  

class Program    {        static void Main(string[] args)        {        int sum;//不需赋值,即使赋值,也会被覆盖            NumSum(10,5,out sum);            Console.Write(sum);            Console.ReadKey();        }   /// <summary>        /// 求和        /// </summary>        /// <param name="num1"></param>        /// <param name="num2"></param>        /// <param name="sum"></param>        private static void NumSum(int num1,int num2,out int sum)        {            sum = num1 + num2;        }}

  

  相关解决方案