2009-10-06 5 views
-1

여러 if 문을 사용하여 for 루프를 작성합니다.For 루프 - 부울 조건이 거짓으로 평가되면 계속하십시오.

for 문에서 if 문 (또는 그 일부)이 false로 평가되면 루프가 종료되지 않지만 반복문을 하나씩 반복하고 정수를 반복하여 루프를 계속할 수 있습니까? 계속; 키워드와 같이).

예 :

for (int i = 0; i <= Collection.Count && Collection[i].Name != "Alan"; i++) 
{ 
    // If name is not Alan, increment i and continue the loop. 
} 

이 가능합니까?

감사

+3

예제 코드는 큰 도움이 될 것입니다. 나는 당신이 "거짓으로 평가하는 if 문"에 대해 무슨 뜻인지 전혀 모르겠다. 그렇다면 내부의 물건이 실행되지 않고 루프가 정상적으로 계속된다. – DisgruntledGoat

+0

예제 코드를 제공하십시오. – abelenky

답변

16

당신은 continue 키워드와 같은 기능을 필요로 - 당신이 다음의 continue 키워드를 사용하여 고려 했는가?

업데이트 : 예제 코드는 의도를 해독하기 어렵습니다.

for (int i = 0; i <= Collection.Count && Collection[i].Name != "Alan"; i++) 
{ 
    // If name is not Alan, increment i. 
} 

for 루프는 두 세미콜론으로 분리 된 것이 세 부분을 갖는다. 첫 번째 부분은 루프 변수를 초기화합니다. 두 번째 부분은 반복이 시작될 때마다 평가되는 표현식입니다. 거짓이면 루프가 종료됩니다. 세 번째 부분은 각 반복 후에 실행됩니다.

위의 루프는 처음 발생하는 "Alan"에서 종료되며, 반복이 완료 될 때마다 i이 증가합니다. 마지막으로, Alans가 없으면 마지막으로 iCollection.Count과 같게 실행합니다.이 값은 컬렉션의 최대 유효 인덱스보다 큰 값입니다. 따라서 i이 범위를 벗어날 때 Collection[i]에 액세스하려고하면 예외가 발생합니다.

foreach (var item in Collection.Where(i => i.Name != "Alan")) 
{ 
    // item is not an "Alan" 
} 

당신은 컬렉션을 필터링하는 방법으로 Where 확장 방법을 생각할 수 있습니다 :

은 아마 당신이 원하는.

foreach (var item in Collection) 
{ 
    if (item.Name == "Alan") 
     continue; 

    // item is not an "Alan" 
} 

을 또는 당신은 단지 if의 블록에 코드를 넣을 수 있습니다 :이 모호한 것 같으면

, (당신이 짐작으로) 당신은 continue 키워드와 같은 일을 달성 할 수

foreach (var item in Collection) 
{ 
    if (item.Name != "Alan") 
    { 
     // item is not an "Alan" 
    } 
} 
+0

설명해 주셔서 감사합니다. 나는 Where() 메서드를 알고 있지만 위와 같은 것들을 실행하는 것이 가능하다고 생각했지만 올바른 방법이 아닌 것 같다. 감사. – dotnetdev

1

이 뜻입니까?

for (int i = 0; i < 100;) { 
    if (!condition1) { 
     i++; 
    } 
    if (!condition2) { 
     i++; 
    } 
    if (!condition3) { 
     i++; 
    } 
} 

는 루프의 본문에로 루프에 대한 마무리를위한 증 분기를 원하십니까?

1

정확하게 이해하고 있는지 잘 모르겠습니다. 당신이 한 번만 i에를 증가 계속 사용하는 경우

:이

for (int i = 0; i < 10; i++) 
{ 
    // do something 
    if (!b1) 
     i++ 

    // do something 
} 

편집과 같은 루프 뭔가가있다. 루프에서 i ++를 사용하면 분명히 두 번 증가합니다.조건에만 적용하려면, for 루프를 다음과 같이 사용하십시오 :

for (int i = 0; i < 10) // 이것은 while 루프와 매우 유사합니다.

0

예제 코드에서 "Alan"이라는 이름을 찾고 있다고 생각합니다. 이것이 맞습니까?

그렇다면, 구조와 같은 루프 :

for (int i = 0; i < Collection.Count; i++) 
{ 
    if (Collection[i].Name == "Alan") 
    { 
     break; // We found the name we wanted! 
    } 

    // Otherwise: Keep going to look for the name further on. 
} 

if (i == Collection.Count) 
{ 
    Console.WriteLine("Alan is not found"); 
} 
else 
{ 
    Console.WriteLine("Alan found at position {0}", i); 
}