是否可以在与设置out形参的调用相同的表达式中,将out形参的变量用作另一个函数的下一个实参?

本文关键字:形参 out 变量 实参 函数 另一个 下一个 设置 调用 表达式 是否 | 更新日期: 2023-09-27 18:03:51

这段代码安全吗?它会像我期望的那样吗?有什么陷阱吗?GenerateValue是否有必要使用ref参数,或者按值接受该参数的方法也可以工作?

 int value;
 UseValue(GenerateValue(out value), ref value);

方法定义不应该影响答案,但这里有一个示例定义:

    private bool GenerateValue(out int value)
    {
        bool success = true;
        value = 42;
        return success;
    }
    private void UseValue(bool success, ref int value)
    {
        if (success)
        {
            System.Diagnostics.Debug.WriteLine(value);
        }
    }

是否可以在与设置out形参的调用相同的表达式中,将out形参的变量用作另一个函数的下一个实参?

代码是安全的。基本上相当于

int value;
bool res = GenerateValue(out value);
UseValue(res, ref value);

请注意,正如@sstan所评论的那样,ref在我们的案例中并不真正需要。但是,即使由于Usevalue内部的value发生变化而需要更改,代码仍然保持正常

UseValue(GenerateValue(out value), value);

也很好。就当是顺序呼叫吧。