3 回答
TA贡献1871条经验 获得超8个赞
在某些(很少)情况下,goto可以真正提高可读性。实际上,您链接到的文档列出了两个示例:
goto的常见用法是将控制权转移到特定的切换用例标签或switch语句中的默认标签。
goto语句对于摆脱深层嵌套的循环也很有用。
这是后一个示例:
for (...) {
for (...) {
...
if (something)
goto end_of_loop;
}
}
end_of_loop:
当然,还有其他方法可以解决此问题,例如将代码重构为函数,在其周围使用伪块等(有关详细信息,请参见此问题)。作为附带说明,Java语言设计人员决定完全禁止goto并引入带标签的break语句。
TA贡献1784条经验 获得超8个赞
我记得这部分
switch (a)
{
case 3:
b = 7;
// We want to drop through into case 4, but C# doesn't let us
case 4:
c = 3;
break;
default:
b = 2;
c = 4;
break;
}
对于这样的事情
switch (a)
{
case 3:
b = 7;
goto case 4;
case 4:
c = 3;
break;
default:
b = 2;
c = 4;
break;
}
推荐这个
TA贡献1776条经验 获得超12个赞
我不记得曾经使用过goto。但是,也许它可以改善您永远不想退出的永久循环的意图(不break,但您仍然可以return或throw):
forever: {
// ...
goto forever;
}
再说一次,一个简单的while (true)就足够了...
同样,您可以在希望循环的第一次迭代在循环的中间开始的情况下使用:在此处查看示例。
- 3 回答
- 0 关注
- 995 浏览
添加回答
举报