首页 > 学院 > 开发设计 > 正文

c# ref与out的区别

2019-11-17 03:21:20
字体:
来源:转载
供稿:网友

c# ref与out的区别

c# ref与out的区别

相同点:都是输出参数

不同点:

ref:

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

2.有进有出;

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

4、是传递参数的地址

out:

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

2、只出不进;

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

4、返回值;

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

ref:

 1   class PRogram 2     { 3         static void Main(string[] args) 4         { 5           //num1,num2,必须赋值 6             int num1 = 10; 7             int num2 = 5; 8             Exchage(ref num1,ref num2);//调用方法,必须在变量前,必须加ref关键字 9         10         }11   /// <summary>12         /// 使用ref方法,参数必须加ref关键字13         /// </summary>14         /// <param name="num1"></param>15         /// <param name="num2"></param>16         private static void Exchage(ref int num1,ref int num2)17         {18             //交换前19                 Console.WriteLine("num1的值:{0};num2的值:{1}", num1, num2);20                 int temp = num1;21                 num1 = num2;22                 num2 = temp;23                 //交换后24                 Console.WriteLine("num1的值:{0};num2的值:{1}", num1, num2);25                 Console.ReadKey();26         }
View Code

out:

 1    class Program 2     { 3         static void Main(string[] args) 4         { 5         int sum;//不需赋值,即使赋值,也会被覆盖 6             NumSum(10,5,out sum); 7             Console.Write(sum); 8             Console.ReadKey(); 9         }10    /// <summary>11         /// 求和12         /// </summary>13         /// <param name="num1"></param>14         /// <param name="num2"></param>15         /// <param name="sum"></param>16         private static void NumSum(int num1,int num2,out int sum)17         {18             sum = num1 + num2;19 20         }21 }
View Code


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表