• 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

  • 相关阅读:
    Rraspberry Pi 4B python3 安装opencv
    如何用arduion制作智能 垃圾桶
    MySQL(二)表结构的管理
    MySQL(一)基础操作
    vc++绘图基础
    网站签~
    (转)Oracle 知识日常积累
    利用反射判断bean属性不为空(null和空串)
    (转)Oracle 单字段拆分成多行
    svn 解决树冲突
  • 原文地址:https://www.cnblogs.com/yougoo/p/9562686.html
Copyright © 2020-2023  润新知