如果在非括号内的foreach

时间:2016-02-04 18:03:37

标签: c# .net if-statement foreach

之前可能已经回答过这个问题,但我无法想出一个很好的方法来解释我的搜索。

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

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

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

我没有写这篇文章,并且正在寻找遗留系统的问题。我不这就是它,但我似乎记得你只能跳过括号,如果所有嵌套都跳过括号(在c#.net中)。这是对的吗?

3 个答案:

答案 0 :(得分:5)

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

在逻辑上与此

相同
foreach(item in list)
{
    if(something)
    {
        dosomething();
    }
}
if(somethingunrelated)
{
    dosomethingunrelated();
}
不要被缩进愚弄。

答案 1 :(得分:3)

  

我似乎记得,如果嵌套的所有东西都跳过括号

,你只能跳过括号

否 - 如果省略括号,则只有下一个语句将在范围内。 “单一陈述”可以是括号内的陈述,因此在您的情况下

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

答案 2 :(得分:2)

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