如果我有一个嵌套在另一个循环中的 for 循环,我怎样才能以最快的方式有效地退出两个循环(内部和外部)?
我不想必须使用布尔值然后不得不说转到另一种方法,而只是在外循环之后执行第一行代码。
什么是解决这个问题的快速而好的方法?
我当时认为异常并不便宜/应该只在真正异常的情况下抛出等。因此,从性能角度来看,我认为这种解决方案不会很好。
我认为利用 .NET 中的新功能(匿名方法)来做一些非常基本的事情是不正确的。
好吧,goto但这很丑陋,而且并不总是可能的。您还可以将循环放入方法(或匿名方法)中并用于return退出回到主代码。
goto
return
// goto for (int i = 0; i < 100; i++) { for (int j = 0; j < 100; j++) { goto Foo; // yeuck! } } Foo: Console.WriteLine("Hi");
与:
// anon-method Action work = delegate { for (int x = 0; x < 100; x++) { for (int y = 0; y < 100; y++) { return; // exits anon-method } } }; work(); // execute anon-method Console.WriteLine("Hi");
请注意,在 C# 7 中,我们应该得到“本地函数”,这(语法待定等)意味着它应该像这样工作:
// local function (declared **inside** another method) void Work() { for (int x = 0; x < 100; x++) { for (int y = 0; y < 100; y++) { return; // exits local function } } }; Work(); // execute local function Console.WriteLine("Hi");