2016-02-04 213 views
0

這可能已經在某個地方被回答了,但是我找不出一個用於搜索我的搜索的好方法。如果在非括號內的foreach中包含括號內容

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

除了顯而易見的非常難以閱讀,有沒有什麼辦法可以跳過if語句?

我認爲這裏應該是foreach將迭代列表中的每個項目並應用第一個if語句。在foreach完成後,第二個if將被應用一次。

我沒有寫這個,並且正在尋找遺留系統上的問題。我不認爲認爲這是它,但我似乎記得,如果嵌套的一切都跳過括號(在C#.net中),你可以只跳過括號。那是對的嗎?

+4

*我覺得這裏預期的是,在foreach將每個項目迭代列表和應用第一個if語句。在foreach完成後,第二個if將會被應用一次。*你是對的。 –

+1

不,你記得有錯 – Steve

+2

你的假設是正確的。第二個'if'只會在'foreach'完成執行後被命中一次。 – mike

回答

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

在邏輯上是相同的,因爲這

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

不要被縮進被愚弄。

2

第二個if語句將在foreach循環完成後執行。

3

我好像記得,你只能跳過括號,如果一切嵌套跳過支架以及

否 - 如果省略括號,然後只剩下一單個語句將在範圍之內。 「單一的語句」可以是一個括號語句,所以你的情況

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