美文网首页
C# 使用goto跳出多重循环

C# 使用goto跳出多重循环

作者: 寻找无名的特质 | 来源:发表于2021-02-08 06:19 被阅读0次

    goto在三四十年前的Basic时代是不可替代的,因为那时候连循环也没有,只能使用判断语句和goto结合实现循环。到了后来goto语句是不主张使用的了,甚至很多语言中取消了goto语句。多年不用,已经想不起来用它。最近写代码,需要跳出多重循环,而使用break只能跳出一重循环,终于发现在这里goto有用武之地,示例代码如下:

    foreach(var state in atomicStates)
                {
                    var slist = new List<StateConfigure>();
                    slist.Add(state);
                    slist.AddRange(getProperAncestors(state, null));
                    foreach(var s in slist)
                    {
                        foreach(var t in s.Transitions)
                        {
                            if(!string.IsNullOrEmpty(t.Event) && nameMatch(t.Event, internalEvent.Name) && conditionMatch(t))
                            {
                                enabledTransitions.Add(t);
                                goto loop;
                            }
                        }
                    }
                    loop:;
                }
    

    在这里使用goto语句可以使代码更容易理解,结果也更优雅。

    相关文章

      网友评论

          本文标题:C# 使用goto跳出多重循环

          本文链接:https://www.haomeiwen.com/subject/ffyztltx.html