如何在功能中分配参数?

时间:2012-06-05 21:15:27

标签: c# .net c#-4.0

我有一个返回对象的方法,并且还有一个out参数。该方法调用另一个方法,该方法采用与另一个参数相同的out参数。这会在return语句中出现构建错误:

  

必须在控制离开前指定out参数'param1'   目前的方法

代码如下:

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

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

3 个答案:

答案 0 :(得分: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分配任何内容。还有更多没有解释过吗?

答案 1 :(得分:1)

您可以在false的最开始将其设置为Method1

答案 2 :(得分:0)

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

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