【问题标题】:C# Out ParameterC# 输出参数
【发布时间】:2014-11-10 13:48:58
【问题描述】:

为什么必须在 out 参数离开当前方法之前对其进行赋值? 有人可以详细说明一下外壳内部发生了什么吗?提前致谢。

【问题讨论】:

  • Out 表示参考参数。有时方法必须返回多个值并且不存储类状态。 Out 满足了这些要求。有了它,我们传递参数,这些参数的变化在它们的调用方法中实现

标签: c# .net


【解决方案1】:

为什么必须在 out 参数离开当前方法之前对其进行赋值?

out 参数视为额外的返回值。就像你不能在不指定返回值的情况下从非 void 方法返回一样,你不能在不为参数设置值的情况下从带有 out 参数的方法返回。

这反过来允许out参数的参数在方法完成后被确定地分配,因为它肯定会被方法赋予一个值:

int value;
Foo(out value);
Console.WriteLine(value); // This is fine

【讨论】:

    【解决方案2】:

    因为是这样设计的。这就是outref参数的区别。通过将参数声明为out,该方法保证它会设置参数的值。通过@987654324 @,没必要。如果你不想要out,请使用ref

    【讨论】:

    • 当然,对于out,该方法还保证在它写入参数值之前,它永远不会读取参数的值至少一次。另一方面,对于ref,调用者必须确保变量已明确分配。所以我想我们可以说ref 对调用者施加了一些限制,而out 限制了实现。
    猜你喜欢
    • 1970-01-01
    • 2011-10-22
    • 2012-02-27
    • 2014-07-10
    • 1970-01-01
    • 2021-10-01
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多