请教C#中内层循环终止外层循环的方法

Brave_lxx 2009-08-02 05:03:42
我原来是学Java的。最近必须用C#做一些项目,一些基础的东西不大明白。

例如java中:

label1:for(int i=0;i<100;i++){
for(int j=0;j<100;j++)
if(j==30)
continue label1;
}

这样,当j循环到30时,就会执行continue label1语句,从而跳出内层循环,继续外层循环。

但同样的代码在c#中似乎不适用。打出continue label1的这句话时,系统似乎根本不认识label1是什么东西。请教c#是怎么做内层循环终止或者继续外层循环的?谢谢了
...全文
1374 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
sullian 2009-10-08
  • 打赏
  • 举报
回复
很简单,脑筋转一下就可以了:


int i=0; //在这里定义
l1: for(;i <100;i++)
for(int j=0;j <100;j++)
if(i==30)
goto l1;

mbh0210 2009-08-03
  • 打赏
  • 举报
回复
break就跳出内层循环了
michaelnami 2009-08-03
  • 打赏
  • 举报
回复
2楼顶
Ivony 2009-08-02
  • 打赏
  • 举报
回复
C#支持goto,所以continue和break的标号语法就没有意义了。Java不支持goto。
Ivony 2009-08-02
  • 打赏
  • 举报
回复
用goto跳出去,或者抛异常(不推荐)。
周药师 2009-08-02
  • 打赏
  • 举报
回复
少用continue
尽量用break跳出循环
FiredFish 2009-08-02
  • 打赏
  • 举报
回复
用bool变量 作标识
如果是真 继续 反之 结束循环
如果想用continue
就用int变量作表示
Brave_lxx 2009-08-02
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 gui0605 的回复:]
bool _flag = false;
for(int i=0;i <100;i++)
{
      for(int j=0;j <100;j++)
      {
        if(i==30)
        {
          _flag=true;
          break;
        }
      }
      if(_flag)
        continue;
}
试试行不行,我这台电脑没有IDE,无法测试
[/Quote]

这个方法当然行,相当于手动实现了上述我说的continue l1功能。
SAMINCsharp 2009-08-02
  • 打赏
  • 举报
回复
return
gui0605 2009-08-02
  • 打赏
  • 举报
回复
bool _flag = false;
for(int i=0;i <100;i++)
{
for(int j=0;j <100;j++)
{
if(i==30)
{
_flag=true;
break;
}
}
if(_flag)
continue;
}
试试行不行,我这台电脑没有IDE,无法测试
Brave_lxx 2009-08-02
  • 打赏
  • 举报
回复
哦。。看来C#里面不支持continue/break后直接加标号啊。。。

ls的你那样虽然能够跳出循环,但是只能跳出内层循环。我这里需要的是一种内层循环控制外层循环的方法。
jwdream2008 2009-08-02
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 brave_lxx 的回复:]
引用 5 楼 jwdream2008 的回复:
break 不行吗?


其实我主要是需要continue功能,另无论是break还是continue,只要后面加了标号,似乎都会报错。
[/Quote]
break后面不要添加标号!
or(int i=0;i <100;i++){ 
for(int j=0;j <100;j++)
if(j==30)
break;
}

Brave_lxx 2009-08-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jwdream2008 的回复:]
break 不行吗?
[/Quote]

其实我主要是需要continue功能,另无论是break还是continue,只要后面加了标号,似乎都会报错。
Brave_lxx 2009-08-02
  • 打赏
  • 举报
回复
刚才编了个程序试了下,这样goto的话i值会重新归0啊。
l1: for(int i=0;i <100;i++)
for(int j=0;j <100;j++)
if(i==30)
continue l1;
在其他语言中,这个的作用应该是当i=30时,跳出到外层循环,并继续下次外层循环。也就是说这样跳出后继续下次循环i=31。

而上面的代码:
l1: for(int i=0;i <100;i++)
for(int j=0;j <100;j++)
if(i==30)
goto l1;
这个代码的作用是跳出循环,重新进入循环,i值置为0重新循环。这个与上面的功能不一样啊。
jwdream2008 2009-08-02
  • 打赏
  • 举报
回复
break 不行吗?
Brave_lxx 2009-08-02
  • 打赏
  • 举报
回复
只有goto语句?这个我在java中没考虑过,假如
l1: for(int i=0;i<100;i++)
for(int j=0;j<100;j++)
if(i==30)
goto l1;

如果这样的话,当i=30时,内循环就会跳到外循环上,但是接下来外循环继续的时候是i=31还是i=30呢?
LQknife 2009-08-02
  • 打赏
  • 举报
回复
楼上正解
jwdream2008 2009-08-02
  • 打赏
  • 举报
回复
 

label1:for(int i=0;i <100;i++){
for(int j=0;j <100;j++)
if(j==30)
goto label1;
}
jwdream2008 2009-08-02
  • 打赏
  • 举报
回复
break

110,533

社区成员

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

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

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