Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以使用out参数的变量作为另一个函数的下一个参数,该函数的表达式与设置out参数的调用相同?_C#_Argument Passing - Fatal编程技术网

C# 是否可以使用out参数的变量作为另一个函数的下一个参数,该函数的表达式与设置out参数的调用相同?

C# 是否可以使用out参数的变量作为另一个函数的下一个参数,该函数的表达式与设置out参数的调用相同?,c#,argument-passing,C#,Argument Passing,这段代码安全吗?它能达到我的预期吗?有什么陷阱吗?GenerateValue是否需要使用ref参数,或者按值获取该参数的方法是否也可以工作 int value; UseValue(GenerateValue(out value), ref value); 方法定义不应影响答案,但以下是一个示例定义: private bool GenerateValue(out int value) { bool success = true; value =

这段代码安全吗?它能达到我的预期吗?有什么陷阱吗?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
在我们的案例中并不是真正需要的。但是,即使由于
内部
使用值
的更改而需要,代码仍然保持正常。

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

int value;
bool res = GenerateValue(out value);
UseValue(res, ref value);
请注意,正如@sstan评论的那样,
ref
在我们的案例中并不是真正需要的。但即使由于
value
内部
Usevalue
的更改而需要它,代码仍然保持正常。

Usevalue(GenerateValue(out value),value)

也很好。我想这是一个连续的电话

UseValue(生成值(输出值),值)


也很好。我想这是一个连续的电话

它不需要在
UseValue
中为
ref
。它不需要在
UseValue
中为
ref