programing

"forach" 루프의 반복을 건너뛰려면 어떻게 해야 합니까?

i4 2023. 5. 21. 10:58
반응형

"forach" 루프의 반복을 건너뛰려면 어떻게 해야 합니까?

Perl에서 나는 다음을 사용하여 각(또는 모든 루프) 반복을 건너뛸 수 있습니다.next;지휘권

반복을 건너뛰고 C#의 다음 루프로 건너뛰는 방법이 있습니까?

 foreach (int number in numbers)
 {
     if (number < 0)
     {
         // What goes here to skip over the loop?
     }

     // otherwise process number
 }

원하는 항목:

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

    // do work
}

키워드에 대해 자세히 알아보겠습니다.


업데이트: Brian의 후속 질문에 대한 답변:

만약 제가 루프를 위해 중첩을 하고 확장된 루프 중 하나의 반복을 건너뛰고 싶다면 어떻게 해야 하는지 더 명확히 해주실 수 있나요?

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

A continue항상 가장 가까운 범위에 적용되므로 가장 바깥쪽 루프를 벗어나는 데 사용할 수 없습니다.만약 그런 증상이 생긴다면, 당신은 당신이 정확히 무엇을 원하는지에 따라 더 복잡한 일을 해야 할 것입니다.break그러면 내부 루프에서.continue바깥 고리에키워드에 대한 설명서는 여기를 참조하십시오.breakC# 키워드는 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.
  }
}

또 다른 접근 방식은 루프가 실행되기 전에 LINQ를 사용하여 필터링하는 것입니다.

foreach ( int number in numbers.Where(n => n >= 0) )
{
    // process number
}

if 테스트를 뒤집을 수도 있습니다.


foreach ( int number in numbers )
{
     if ( number >= 0 )
     {
        //process number
     }
 }
foreach ( int number in numbers )
{
    if ( number < 0 )
    {
        continue;
    }

    //otherwise process number
}

문을 사용할 수 있습니다.

예:

foreach(int number in numbers)
{
    if(number < 0)
    {
        continue;
    }
}

linq를 사용하는 또 다른 방법은 다음과 같습니다.

foreach ( int number in numbers.Skip(1))
{   
    // process number  
}

여러 항목 중 첫 번째 항목을 건너뛰려면 다음과 같이 하십시오.

또는 사용.SkipWhere건너뛰기 조건을 지정하려는 경우.

continue 문을 사용합니다.

foreach(object number in mycollection) {
     if( number < 0 ) {
         continue;
     }
  }

가장 쉬운 방법은 다음과 같습니다.

//Skip First Iteration

foreach ( int number in numbers.Skip(1))

//Skip any other like 5th iteration

foreach ( int number in numbers.Skip(5))

언급URL : https://stackoverflow.com/questions/654113/how-do-i-skip-an-iteration-of-a-foreach-loop

반응형