2015-08-21 4 views
-7

Что является самым элегантным способом продолжения внешнего цикла после выполнения одного из операторов if? Я знаю, что могу использовать goto, однако я бы хотел его избежать.Вернитесь ко второму циклу foreach

foreach (var pair in firstStrings) 
     { 
      foreach (var pair2 in secondStrings) 
      { 
       if (secondStrings.ContainsKey(pair.Key)) 
       { 
        LogMessage(
         pair.Value + " <----------> " + pair2.Value + " On Line " + (int)(pair.Key.Item1 + 1)); 

       } 
       if (!(secondStrings.ContainsKey(pair.Key))) 
       { 
        LogMessage(
         pair.Value + "Missing data " + " on line " + (int)(pair.Key.Item1 + 1) + " in file " + " " + 
         Path.GetFileName(pathTwo)); 

       } 

       if (!(firstStrings.ContainsKey(pair2.Key))) 

        LogMessage(
         pair2.Value + "Missing data " + " on line " + (int)(pair2.Key.Item1 + 1) + " in file " + " " + 
         Path.GetFileName(pathOne)); 
      } 
     } 
+3

Что такое 'break' во внутреннем цикле? –

ответ

3

Вы можете использовать break. Он разбивает цикл, в котором вы сейчас находитесь.

Плюс в вашем состоянии вы должны использовать else if, а не несколько if.

foreach (var pair in firstStrings) 
{ 
    foreach (var pair2 in secondStrings) 
    { 
     if (secondStrings.ContainsKey(pair.Key)) 
     { 
      LogMessage(
       pair.Value + " <----------> " + pair2.Value + " On Line " + (int)(pair.Key.Item1 + 1)); 

      break; 
     } 
     else if (!(secondStrings.ContainsKey(pair.Key))) 
     { 
      LogMessage(
       pair.Value + "Missing data " + " on line " + (int)(pair.Key.Item1 + 1) + " in file " + " " + 
       Path.GetFileName(pathTwo)); 

      break; 
     } 
     else if (!(firstStrings.ContainsKey(pair2.Key))) 
     { 
      LogMessage(
       pair2.Value + "Missing data " + " on line " + (int)(pair2.Key.Item1 + 1) + " in file " + " " + 
       Path.GetFileName(pathOne)); 

      break; 
     } 
    } 
} 
+3

Нет необходимости в 'else' после' break; ' –

+0

@ X-TECH Yup right! – Shaharyar

1

break; в большинстве языков сломать внутренний цикл (переход к внешней петле в вашем случае).

1

Оператор break будет работать, поскольку он только разбивает внутренний цикл, а не все циклы.

Смежные вопросы