return 不能跳出foreach 循环?

liujuanwh 2004-08-24 12:09:32
return 不能跳出foreach 循环?
...全文
1172 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
liujuanwh 2004-08-26
  • 打赏
  • 举报
回复
解决了,应该在
IsContainGen(tb);
改成 if (IsContainGen(tb)) return true; 这样才对,如果IsContainGen(tb)为true,表示已找到,就逐层返回true;如果为IsContainGen(tb)为false不需要返回,只需继续寻找.

呵呵,谢谢各位了
Knight94 2004-08-24
  • 打赏
  • 举报
回复
把代码改成如下:
public static bool IsContainGen(Control page)
{
foreach(Control c in page.Controls)
{
if ( c is TextBox ) //在页面搜索到文本框就跳出,函数返回true
{

return true; //这一句只能结束此次循环,为什么跳不出for循环?
}
else
{
if (c.HasControls())
{
Control tb=c;
return IsContainGen(tb);
}
}
}
return false;
}
tailzhou 2004-08-24
  • 打赏
  • 举报
回复
你没判断内层的调用吧?
if (c.HasControls())
{
Control tb=c;
return IsContainGen(tb);
}
dazhu2 2004-08-24
  • 打赏
  • 举报
回复
郁闷!return可以退出整个函数 呀?!
huguojunsy 2004-08-24
  • 打赏
  • 举报
回复
你这是递归调用,每次调用IsContainGen()时,IsContainGen内部又可以调用他自己...........,所以跳出了某次调用可能只是返回上一层的调用而已。
liujuanwh 2004-08-24
  • 打赏
  • 举报
回复
public static bool IsContainGen(Control page)
{
foreach(Control c in page.Controls)
{
if ( c is TextBox ) //在页面搜索到文本框就跳出,函数返回true
{

return true; //这一句只能结束此次循环,为什么跳不出for循环?
}
else
{
if (c.HasControls())
{
Control tb=c;
IsContainGen(tb);
}
}
}
return false;
}

代码在此
int64 2004-08-24
  • 打赏
  • 举报
回复
return能跳出任何东西
holysky 2004-08-24
  • 打赏
  • 举报
回复
肯定可以,
是不是程序逻辑有问题没有执行到return或是外部有个循环的对此函数的调用?
ncucf 2004-08-24
  • 打赏
  • 举报
回复
不会吧,return就会退出这个函数了!
何况是foreach!
dsclub 2004-08-24
  • 打赏
  • 举报
回复
只要执行到这句return就会立刻退出函数体
dsclub 2004-08-24
  • 打赏
  • 举报
回复
可以D
liujuanwh 2004-08-24
  • 打赏
  • 举报
回复
这个函数默认就是把page.Controls搜索完,当找到符合要求的Control后就跳出递归返回true,如果搜完了还没找到就返回false
lxcc 2004-08-24
  • 打赏
  • 举报
回复
用break跳出for循环
Ejnstein 2004-08-24
  • 打赏
  • 举报
回复
......
else
{
if (c.HasControls())
{
Control tb=c;
IsContainGen(tb);
//return IsContainGen(tb);
}
}
......
函数没有出口,如果上一层递归调用完后,而page.Controls还没有枚举完,那么For each还要继续。
wacle 2004-08-24
  • 打赏
  • 举报
回复
举个例子来说明吧:
bool A()
{
...
if(x>0)
{ bool result=A();
//假如执行到以后N次调用后x=0,那么返回true给result,但只是那一层的函数A()调用,并没有返回到最外层,再加个return 就可以了
return result;
}

else
return true;
}

110,538

社区成员

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

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

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