2013-06-19 2 views
-1

안녕 얘들 아, foreach에서 하나의 루프 ahain을 반복하는 방법.foreach에서 하나의 루프를 반복하는 방법

foreach (string line in File.ReadLines("file.txt")) 
{ 
    // now line == "account", next line == "account1" 
    if (line.Contains("a")) 
     //next loop take "account1"; 
    else 
     // need to set that next loop will take line == "account" again 
} 

어떻게 할 수 있습니까?

+4

당신은 할 수 없습니다 올 수있는 경우 추측; 대신'for '를 사용하십시오. – Nolonar

+2

이 예제는 'account'라는 행을 반복해서 읽는 루프에서 멈추게됩니다 ...? –

+0

이것은 XY 문제처럼 보입니다 - http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem. 코드에 대한 전반적인 의도를 설명 할 수 있습니까?이 샘플에는 결함이있는 것 같습니다. – Kami

답변

4

루프에 if/else 구조 만 있다고 가정하면 코드를 변경할 필요가 없습니다.

if 조건이 true으로 평가되면 else이 실행되지 않고 루프가 다시 시작됩니다. 즉시 루프를 다시 시작하고 다른 사람의 continue 문 사용 실행 조건 다음 없는지 확인하려는 더 복잡한에서

:

(가) 문은 포함하는 동안의 다음 반복에 제어를 전달 계속을, do, for 또는 foreach 문이 나타나는 문구. 나는 완전히 예를 이해하지 않지만

foreach (string line in File.ReadLines("file.txt")) 
{ 
    // now line == "account", next line == "account1" 
    if (line.Contains("a")) 
     continue; 
    else 
     // need to set that next loop will take line == "account" again 

    // more stuff that we don't want to execute if line.Contains("a") 
} 
+0

@Downvoter - 치료를 받겠습니까? – Oded

+0

나는 downvote하지 않았다. 그러나 그것이 그가 원하는지 확실하지 않다. else 본문이'print line'이라면 그는 "account"를 여러 번 인쇄 할 수 있습니다. 이를 수행하려면 추가 코드가 필요합니다. – nmat

+0

@nmat - 추가 독서에서, 그가 원하는 것처럼 보이는 것은 말이되지 않습니다. 그가 원하는 라인을 가지고 있다면, 단지 그것을 조작하고 그걸로 끝내지 않을까요? – Oded

1

, 나는 당신의 질문을 이해 생각한다. 나는 같은 문제가 있었고 해결책을 내놓을 수 있었다 : foreach 내에 while 루프를 포함시킨다.

foreach (string line in File.ReadLines("file.txt")) 
{ 
    bool repeat = true; 
    while (repeat) 
    { 
     // now line == "account", next line == "account1" 
     if (line.Contains("a")) 
     { 
      //do your logic for a break-out case 
      repeat = false; 
     } 
     else 
     { 
      //do your logic for a repeat case on the same foreach element 
      //in this instance you'll need to add an "a" to the line at some point, to avoid an infinite loop. 
     } 
    } 
} 

나는 매우 늦게 게임에있어 알아,하지만 희망이 같은 문제를 여기에 비틀 거리며 다른 사람에게 도움이 될 것입니다 : 귀하의 예제에서는이 같을 것이다.

1

나는이 또한 도움이 다른 사람이

for (int i = 0; i < inventoryTimeBlocks.Count; i++) 
{ 
if (line.Contains("a")) 
    //next loop take "account1"; 
else 
{ 
    if(i > 0) 
    { 
    i = i - 1; 
    continue; 
    } 
} 
} 
관련 문제