如何在C#中实现for-else和foreach-else语句?

LEM*_*ANE 4 c# foreach for-loop if-statement

我知道它们不存在,但有其他选择吗?像这样:

for (int i = 0; !connected && i < 100; i++)
{
  Thread.Sleep(1);                  
}
else throw new ConnectionError();
Run Code Online (Sandbox Code Playgroud)

Jon*_*ton 15

foreach-else的Python构造如下:

foreach( elem in collection )
{
    if( condition(elem) )
        break;
}
else
{
    doSomething();
} 
Run Code Online (Sandbox Code Playgroud)

如果在foreach循环期间未调用break,则else仅执行

AC#等价物可能是:

bool found = false;
foreach( elem in collection )
{
    if( condition(elem) )
    {
        found = true;
        break;
    }
}
if( !found )
{
    doSomething();
}
Run Code Online (Sandbox Code Playgroud)

来源:Visual C#开发人员中心


C.E*_*uis 5

当然:

  • 使用其他海报的精美建议之一

  • 使用执行循环的方法代替breakreturn可以避免在循环下面执行代码

  • 使用您可以在设置之前设置的布尔变量break,然后在循环后进行测试

  • 使用goto代替break

如果您问我,这是一个奇怪的模式。“ Foreach”始终会启动,因此“ else”一词在这里没有意义。

  • Aaargh-后藤。真?&lt;shivers /&gt; (2认同)