C# 使用goto跳出多重循环

2021-02-08  本文已影响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语句可以使代码更容易理解,结果也更优雅。

上一篇下一篇

猜你喜欢

热点阅读