我有一个方法返回一个对象,也有一个out参数.该方法调用另一个方法,该方法采用与另一个参数相同的out参数.这给return语句带来了构建错误:
必须在控制离开当前方法之前分配out参数'param1'
代码如下:
public TypeA Method1(TypeA param1, out bool param2)
{
/... some logic here .../
SubMethod(out param2);
/... some logic here .../
return param1;
}
Run Code Online (Sandbox Code Playgroud)
param2在SubMethod()中操作,而不是在Method1()中操作.我还需要做些什么吗?
在这种情况下,我将分配一个“默认”值。无论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
}
Run Code Online (Sandbox Code Playgroud)
但是,您需要确定为什么异常引用“param1”,而在此示例中 param1 显然没有错误(为了澄清:假设TypeB : TypeA并受到适当约束)。
我相信param2作为out参数传递SubMethod(...)消除了分配的义务param2。但是,您尚未向 分配任何内容param1。这里是否还有更多未解释的事情发生?