猿问

有人还在C#中使用[goto]吗?为什么?

我想知道是否还有人在C#中使用“ goto”关键字语法,以及这样做的可能原因是什么?

我倾向于将任何导致读者跳过代码的语句视为不良做法,但想知道是否存在使用这种语法的可信场景?


慕哥6287543
浏览 996回答 3
3回答

ITMISS

在某些(很少)情况下,goto可以真正提高可读性。实际上,您链接到的文档列出了两个示例:goto的常见用法是将控制权转移到特定的切换用例标签或switch语句中的默认标签。goto语句对于摆脱深层嵌套的循环也很有用。这是后一个示例:for (...) {    for (...) {        ...        if (something)            goto end_of_loop;    }}end_of_loop:当然,还有其他方法可以解决此问题,例如将代码重构为函数,在其周围使用伪块等(有关详细信息,请参见此问题)。作为附带说明,Java语言设计人员决定完全禁止goto并引入带标签的break语句。

青春有我

我记得这部分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;}推荐这个

叮当猫咪

我不记得曾经使用过goto。但是,也许它可以改善您永远不想退出的永久循环的意图(不break,但您仍然可以return或throw):forever: {  // ...  goto forever;}再说一次,一个简单的while (true)就足够了...同样,您可以在希望循环的第一次迭代在循环的中间开始的情况下使用:在此处查看示例。
随时随地看视频慕课网APP
我要回答