是否可以在与设置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);
}
}
代码是安全的。基本上相当于
int value;
bool res = GenerateValue(out value);
UseValue(res, ref value);
请注意,正如@sstan所评论的那样,ref
在我们的案例中并不真正需要。但是,即使由于Usevalue
内部的value
发生变化而需要更改,代码仍然保持正常
UseValue(GenerateValue(out value), value);
也很好。就当是顺序呼叫吧。