如果我有一个嵌套在另一个循环中的 for 循环,我怎样才能以最快的方式有效地退出两个循环(内部和外部)?
我不想使用布尔值,然后不得不说转到另一个方法,而只是执行外循环之后的第一行代码。
有什么快速又好的方法可以解决这个问题?
我认为异常并不便宜/只应该在真正的异常条件下抛出等。因此,从性能角度来看,我认为这个解决方案不会很好。
我认为利用 .NET 中的新功能(匿名方法)来做一些非常基本的事情是不对的。
Well, goto
,但这很丑陋,而且并不总是可能的。您还可以将循环放入方法(或非方法)中并使用return
退出回到主代码。
// goto
for (int i = 0; i < 100; i++)
{
for (int j = 0; j < 100; j++)
{
goto Foo; // yeuck!
}
}
Foo:
Console.WriteLine("Hi");
vs:
// 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");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)