zoukankan      html  css  js  c++  java
  • C# out 和 ref 区别

    C#里面的 out 和ref参数时常会用到 记录一下:

    public void Start()
    {
    //outSum没必要赋值,赋值了也完全没用。
    //如果AddByOut函数内部直接使用out对应的参数,会报错:使用了未被赋值的 out 参数a
    int outSum = 1;
    int ov1 = 2;
    int ov2 = 3;
    AddByOut(out outSum, ov1, ov2);
    Console.WriteLine("outSum : " + outSum + " v1: " + ov1 + " v2: " + ov2);


    //refSum 必须赋值
    int refSum = 1;
    int rv1 = 2;
    int rv2 = 3;
    //如果refSum没有赋值,这里会报错:使用了未赋值的局部变量 refSum
    AddByRef(ref refSum, rv1, rv2);
    Console.WriteLine("refSum : " + refSum + " v1: " + rv1 + " v2: " + rv2);
    }

    public void AddByOut(out int a, int b, int c)
    {
    //a = a + b + c;// a 未被赋值,不能直接使用,即使是调用的地方 out对应的参数初始化也没用
    a = b + c;
    }

    public void AddByRef(ref int a, int b, int c)
    {
    a = a + b + c; // 可以直接使用a
    }

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

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

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

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

  • 相关阅读:
    python核心编程2 第八章 练习
    python核心编程2 第六章 练习
    python核心编程2 第五章 练习
    Redis
    CENTOS7错误:Cannot find a valid baseurl for repo: base/7/x86_6
    HTTP协议
    计算机网络知识点
    好记性不如烂笔头~
    一些算法题
    解决mysql插入数据时出现Incorrect string value: 'xF0x9F...' 的异常
  • 原文地址:https://www.cnblogs.com/struggle-cs/p/11350812.html
Copyright © 2011-2022 走看看