out 参数的问题

spmzfz 2017-03-22 12:31:35

private List<string> GetData(string SourceStocks, out bool IsGetOk)
{
//....
}


private List<string> GetAllData(out bool IsGetOK )
{
//......

//【ReturnStrs】分批串联储存查询返回 的数据信息。
List<string> ReturnStrs = new List<string>();
bool isOk;
for (int i = 0; i < MarkShOrSz.Count; i++)
{
ReturnStrs.AddRange(GetData(MarkShOrSz[i],out isOk ));
IsGetOK = isOk; //在这里对GetData()传过来的IsGetOk 值isOk赋值给 此方法的IsGetOK
if(!isOk )
{
return null;
}
}

return ReturnStrs; // 在此行提示出错 :控制离开方法之前必须对OUT 参数 IsGetOK 赋值?
}


两个方法都有OUT参数 ,编码会在24行提示出错误:控制离开方法之前必须对OUT 参数 IsGetOK 赋值? 我在for 循环里17行IsGetOK = isOk;已经对IsGetOK 赋值,怎么还提示错误呢?
...全文
147 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
编译器并不执行你的程序,它并不知道你 for 循环里边的代码一定会被执行。
xuzuning 2017-03-22
  • 打赏
  • 举报
回复
private List<string> GetAllData(out bool IsGetOK ) { IsGetOK = false; //一进来就赋初值 //......
正怒月神 2017-03-22
  • 打赏
  • 举报
回复
IsGetOK 在方法中赋值一下就好了
xian_wwq 2017-03-22
  • 打赏
  • 举报
回复
out类型的参数,在每个退出的分支上都必须赋值 要简单处理,就是在函数开头,给该参数赋个初值
  • 打赏
  • 举报
回复
for你可能实际条件必定会赋值,但编译器没法得知,它只是按逻辑确认for可能不会执行到赋值过程

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧