5

我有一个返回对象的方法,也有一个 out 参数。该方法调用另一个方法,该方法接收与另一个输出参数相同的输出参数。这会在 return 语句上产生构建错误:

在控制离开当前方法之前,必须将输出参数“param1”分配给

代码如下所示:

public TypeA Method1(TypeA param1, out bool param2)
{
  /... some logic here .../
  SubMethod(out param2);
  /... some logic here .../
  return param1;
}

param2 在 SubMethod() 中操作,而不是在 Method1() 中。还有什么我需要做的吗?

4

3 回答 3

3

在这种情况下,我将分配一个“默认”值。不管 bool、int、myFoo 等 - 设置一个默认值。

public TypeA Method1(TypeB param1, out bool param2)
{
  param2 = false;   // default value;
  // or
  param2 = default(bool); // in cases where you are not sure what the default is

  /... some logic here .../
  SubMethod(out param2);
  /... some logic here .../
  return param1; // UPDATE: <- this is where you are receiving the exception
}

但是,当 param1 在此示例中显然没有错误时,您需要确定为什么异常指的是“param1”(为了澄清假设TypeB : TypeA并受到适当的约束)。

我相信param2作为out参数传递SubMethod(...)可以消除分配的义务param2。但是,您尚未将任何内容分配给param1. 这里还有更多没有解释的事情吗?

于 2012-06-05T21:19:29.580 回答
1

您可以将其设置falseMethod1.

于 2012-06-05T21:17:21.373 回答
0

我可以建议将 SubMethod 中的 out 参数移动到返回类型:

public TypeA Method1(TypeB param1, out bool param2)
{
  /... some logic here .../
  param2 = SubMethod(param2);
  /... some logic here .../
  return param1;
}
于 2012-06-05T21:18:54.573 回答