Как я пропускаю повторение 'foreach' цикла?

Добавление этого, хотя и не идеальное или правильное решение, решает проблему на данный момент.

this.items = items[0]

304
задан Brian 9 April 2014 в 22:51
поделиться

6 ответов

Вы хотите:

foreach (int number in numbers) //   <--- go back to here --------+
{                               //                                |
    if (number < 0)             //                                |
    {                           //                                |
        continue;   // Skip the remainder of this iteration. -----+
    }

    // do work
}

Вот больше о continue ключевое слово .

<час>

Обновление: В ответ на последующий вопрос Brian в комментариях:

Вы могли далее разъяснить то, что я сделал бы, если я вложил для циклов и хотел пропустить повторение одного из расширенных?

for (int[] numbers in numberarrays) {
  for (int number in numbers) { // What to do if I want to
                                // jump the (numbers/numberarrays)?
  }
}

А continue всегда относится к ближайшему объему включения, таким образом, Вы не могли использовать его для убегания из наиболее удаленного цикла. Если бы условие как этот возникает, необходимо было бы сделать что-то более сложное в зависимости от точно, что Вы хотите, как break от внутреннего цикла, то continue на внешнем цикле. Посмотрите здесь для документации относительно break ключевое слово . break ключевое слово C# подобно ключевому слову Perl last.

кроме того, полагайте, что предложение Dustin взятия просто отфильтровывает значения, которые Вы не хотите обрабатывать заранее:

foreach (var basket in baskets.Where(b => b.IsOpen())) {
  foreach (var fruit in basket.Where(f => f.IsTasty())) {
    cuteAnimal.Eat(fruit); // Om nom nom. You don't need to break/continue
                           // since all the fruits that reach this point are
                           // in available baskets and tasty.
  }
}
630
ответ дан Mark Lakata 23 November 2019 в 01:21
поделиться

Другой подход должен отфильтровать использование LINQ, прежде чем цикл выполнится:

foreach ( int number in numbers.Where(n => n >= 0) )
{
    // process number
}
53
ответ дан Dustin Campbell 23 November 2019 в 01:21
поделиться

Вы могли также зеркально отразить Ваш если тест:


foreach ( int number in numbers )
{
     if ( number >= 0 )
     {
        //process number
     }
 }
24
ответ дан crashmstr 23 November 2019 в 01:21
поделиться
foreach ( int number in numbers )
{
    if ( number < 0 )
    {
        continue;
    }

    //otherwise process number
}
17
ответ дан Tamas Czinege 23 November 2019 в 01:21
поделиться

Можно использовать continue оператор.

, Например:

foreach(int number in numbers)
{
    if(number < 0)
    {
        continue;
    }
}
13
ответ дан Kev 23 November 2019 в 01:21
поделиться

Используйте продолжать оператор:

foreach(object number in mycollection) {
     if( number < 0 ) {
         continue;
     }
  }
7
ответ дан Millicent Achieng 23 November 2019 в 01:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: