zoukankan      html  css  js  c++  java
  • out参数的失控

    开始写了个函数,用来输出剩余量,顺便用out参数把总量、使用量和无效量也输出,:
    int GetRest(out int all, out int usedCount,out int invalidCount)
    {
        all 
    = 10// all = GetAll();
        usedCount = 5;  // usedCount = GetUsedCount();
        invalidCount = 3// invalidCount = GetinvalidCount();
        return all - usedCount - invalidCount;
    }

    用的时候发现很多时候不需要得到三个输出参数,于是写了个无参数的重载:

    int GetRest()
    {
        
    int temp;
        
    return GetRest(out temp, out temp, out temp);
    }

    F6,编译通过!

    吼吼,可是,输出数据非常奇怪!于是单步调试,F10,局部变量窗口发现all,usedCount,invalidCount居然是同样的值!当然也就马上明白是怎么回事:out传参是引用传递!三个变量指向同一个对象,对值类型这种情况还是很少见,不借助out/ref参数,想实现多个值类型变量指向同一个对象也难呐。

    于是最终代码:

    int GetRest()
    {
        
    int temp1,temp2,temp3;
        
    return GetRest(out temp1, out temp2, out temp3);
    }
  • 相关阅读:
    一些$LCT$的瓜皮题目
    写点东西(关于背包问题)
    字符串算法总结
    常系数齐次线性递推
    原根算法与剩余定理
    问题集
    常用链接
    回形针PaperClip
    6.824拾遗
    杂项
  • 原文地址:https://www.cnblogs.com/zhucai/p/ref_out.html
Copyright © 2011-2022 走看看