如果在非括号 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.
}
这可能已经在某个地方得到了回答,但我想不出一个好的方式来表达我的搜索。
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.
}