美文网首页
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