我有一个返回对象的方法,并且还有一个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()中操作。还有什么我需要做的吗?
答案 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;
}