C# out ref 用法总结

C#里面的 out 和ref参数时常会用到,但对它们的区别比较模糊。所以总结一下。下面是测试代码:

 1 public void Start()
 2     {
 3         //outSum没必要赋值,赋值了也完全没用。
 4         //如果AddByOut函数内部直接使用out对应的参数,会报错:使用了未被赋值的 out 参数a
 5         int outSum = 1;
 6         int ov1 = 2;
 7         int ov2 = 3;
 8         AddByOut(out outSum, ov1, ov2);
 9         Console.WriteLine("outSum : " + outSum + "  v1: " + ov1 + "   v2: " + ov2);
10 
11 
12         //refSum 必须赋值
13         int refSum = 1;
14         int rv1 = 2;
15         int rv2 = 3;
16         //如果refSum没有赋值,这里会报错:使用了未赋值的局部变量 refSum
17         AddByRef(ref refSum, rv1, rv2);
18         Console.WriteLine("refSum : " + refSum + "  v1: " + rv1 + "   v2: " + rv2);
19     }
20 
21     public void AddByOut(out int a, int b, int c)
22     {
23         //a = a + b + c;// a 未被赋值,不能直接使用,即使是调用的地方 out对应的参数初始化也没用
24         a = b + c;
25     }
26 
27     public void AddByRef(ref int a, int b, int c)
28     {
29         a = a + b + c; // 可以直接使用a 
30     }

测试结果:

 

总结:   1、调用带ref关键字的函数,必须对 ref 对应的参数赋值;而out关键字不需要。

    2、带ref 关键字的函数内部可以直接使用 ref 对应的参数;out 关键字的函数,必须在函数内部对out对应的参数赋值后才能使用。

      (归结1,2点:ref在外面初始化,out在里面初始化

    3、两个关键字都能使值类型按引用类型使用,即修改了函数外部申明的变量

 

注:更多专业介绍请参考微软官方文档

out 参数修饰符(C# 参考)  https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/out-parameter-modifier

ref(C# 参考)                      https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/ref

转载于:https://www.cnblogs.com/yougoo/p/9562686.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值