您能否在与设置 out 参数的调用相同的表达式中使用 out 参数的变量作为另一个函数的下一个参数?

Can you use the variable of an out parameter as the next argument to another function in the same expression as the call which sets the out parameter?

这段代码安全吗,它会按照我的预期运行吗?有什么陷阱吗? 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);
        }
    }

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

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

请注意,正如 @sstan 评论的那样,ref 在我们的案例中并不是真正需要的。但即使由于 Usevaluevalue 的更改而需要它,代码仍然可以。

UseValue(GenerateValue(out value), value);

也还好。认为它是顺序调用。