C # перейти к следующему пункту в списке на основе оператора if в foreach - PullRequest
52 голосов
/ 24 ноября 2010

Я использую C #. У меня есть список предметов. Я перебираю каждый элемент, используя foreach. Внутри моего foreach у меня есть много if операторов, проверяющих некоторые вещи. Если какое-либо из этих if утверждений возвращает false, то я хочу, чтобы он пропустил этот элемент и перешел к следующему элементу в списке. Все последующие операторы if следует игнорировать. Я попытался использовать перерыв, но перерыв завершает весь оператор foreach.

Это то, что у меня сейчас есть:

foreach (Item item in myItemsList)
{
   if (item.Name == string.Empty)
   {
      // Display error message and move to next item in list.  Skip/ignore all validation
      // that follows beneath
   }

   if (item.Weight > 100)
   {
      // Display error message and move to next item in list.  Skip/ignore all validation
      // that follows beneath
   }
}

Спасибо

Ответы [ 5 ]

105 голосов
/ 24 ноября 2010

Используйте continue; вместо break; для входа в следующую итерацию цикла без выполнения какого-либо дополнительного кода.

foreach (Item item in myItemsList)
{
   if (item.Name == string.Empty)
   {
      // Display error message and move to next item in list.  Skip/ignore all validation
      // that follows beneath
      continue;
   }

   if (item.Weight > 100)
   {
      // Display error message and move to next item in list.  Skip/ignore all validation
      // that follows beneath
      continue;
   }
}

Официальные документы: здесь , ноони не добавляют много цвета.

15 голосов
/ 24 ноября 2010

Попробуйте это:

foreach (Item item in myItemsList)
{
  if (SkipCondition) continue;
  // More stuff here
}
8 голосов
/ 24 ноября 2010

Вы должны использовать:

continue;
4 голосов
/ 24 ноября 2010

Ключевое слово continue будет делать то, что вы после.break выйдет из цикла foreach, так что вы захотите избежать этого.

3 голосов
/ 24 ноября 2010

Используйте continue вместо break. : -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...