如果在非括号 foreach 内则括号

Bracketed if inside non bracketed foreach

这可能已经在某个地方得到了回答,但我想不出一个好的方式来表达我的搜索。

foreach(item in list)
  if(something)
  {
    dosomething();
  }
if(somethingunrelated)
  {
    dosomethingunrelated();
  }

除了极难阅读之外,是否有任何方法可以跳过 if 语句?

我认为这里预期的是 foreach 将遍历列表中的每个项目并应用第一个 if 语句。在 foreach 完成后,第二个 if 将被应用一次。

这不是我写的,我正在努力寻找遗留系统上的问题。我不 认为 就是这样,但我似乎记得如果嵌套的所有内容也跳过括号(在 c#.net 中),您只能跳过括号。对吗?

第二个if 语句将在foreach 循环完成后执行。

foreach(item in list)
    if(something)
    {
        dosomething();
    }
    if(somethingunrelated)
    {
        dosomethingunrelated();
    }

逻辑上与此相同

foreach(item in list)
{
    if(something)
    {
        dosomething();
    }
}
if(somethingunrelated)
{
    dosomethingunrelated();
}

不要被缩进所迷惑。

I seem to remember that you can ONLY skip brackets if everything nested skips the brackets as well

否 - 如果省略括号,则只有下一个语句会在范围内。 "single statement" 可以是括号语句,所以在你的情况下

foreach(...)
    if   <--
    {      |
           | // will  get executed for each item
    }    <--
if   
{  
    // will get executed after the `foreach` is complete.
}