请问,break如何跳出外层循环foreach{foreach{foreach{for(){if()break}}}}如果条件满足,如何让break跳出
请问,break如何跳出外层循环
foreach
{
foreach
{
foreach
{
for()
{
if()
break;
}
}
}
}
如果条件满足,如何让break跳出最外层循环?
[解决办法]详情请查阅goto语句的用法
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 4; j++)
{
if (j == 3)
goto Found;
}
}
Found:
Console.WriteLine("aaa");
[解决办法]goto加一
无条件跳转语句,但是一般只建议在跳多层循环时使用。
[解决办法]重构。(在你的vs里的设计窗口中,点击鼠标右键,你可以看到“重构”选项)
private void abc(....)
{
foreach
{
foreach
{
foreach
{
for()
{
if()
return;
......
[解决办法]重构选项中有好几种方法,你可以选择“提取方法”方法。
除了重构菜单,我们还经常使用Ctrl+K+M(生成方法存根),在一个对象后边的代码上点击鼠标右键选择“生成->属性/字段”等等,这些都是重构方法。
这些都是“小伎俩”,但是是非常基本的编程模式,不用动脑子。
[解决办法]基本上,编程中应该严禁出现向后跳转的goto语句。
对于向前跳转的goto语句,也应该尽量不用。
[解决办法]对于C#来说,goto语句是最好的。
[解决办法]goto不要用,设置变量把,在循环外面加个变量判断,默认为false,如果里面break了,就设置变量为true,然后调出来立即检查变量,如果为true,就接着break,如果是false,那就接着循环
[解决办法]
当然,你也可以用sp1234的小技巧,这样的小技巧有很多,还可以用linq把foreach改成平面的。比如
List<int> data1;
List<int> data2;
foreach (var item1 in data1)
foreach (var item2 in data2)
{
...
}
可以写成
foreach (var x in data1.SelectManay(x => data2.Select(y => new { item1 = x, item2 = y })))
{
...
}
[解决办法]
具体问题具体分析,我可以举出很多案例说明用goto带来更好的可读性。
因为新手用不好goto,所以很多人都告诫新手,不要用goto。但是我会和团队的人说,如果特定情况我告诉你用goto更好,那你就放心按照我说的做好了。
[解决办法]学习
[解决办法]使用goto的代码可读性差到极点,不建议使用,微软应该屏蔽掉这关键字。
[解决办法]+++1
[解决办法]这个方法个人感觉比较简单易懂,只不过需要层层判断,如果你的逻辑比较简单的话,可以考虑这个。
[解决办法]这个例子中用goto比较好,具体问题具体分析,道理是死的,人是活的.
[解决办法]老手与新手的区别体现在奇淫技巧的使用上了
[解决办法]定义一个 bool 类型 如果 bool 值 为 true ,那么就一层 一层跳出,一层加一个 break,最后跳出为止
[解决办法]人家就问怎么跳出 。你跟人家扯什么重构。 搞笑。
[解决办法]说的很清楚了,圈复杂度太高的代码可读性不好
[解决办法]不过这个bool不是变量,而是提取新的方法,这就是重构
[解决办法]亲,用goto吧!挺好!
[解决办法]直接把break;改为return;
[解决办法]跳出有N种方法。
不过如果有的人写了三层以上的循环,99%以上都是算法或结构有问题。
[解决办法]
如果这几个循环里的代码就那么几行,那就goto吧,一眼就看得到
不然还是提到方法里,用return吧
[解决办法]
只要CPU指令集里还有JMP类指令,GOTO就永远不会退出历史舞台。。木哈哈。。敢黑我大GOTO。。。
为什么要怕GOTO?因为挫呗。。。
就像刚入江湖的小菜鸟给他一把锋利的宝剑他却不敢用。。因为太锋利了手艺不够。。一不小心就会把自己划残了。。。
团队编程的问题。。太多菜鸟拿着宝剑乱划,所以干脆禁止使用。。。
[解决办法]
return;