2013-01-10 2 views
0

나는 코드에 갇혀있다!C# Do-While 콜백

는 내가 할 일 -While 루프 내가 스위치-사례를 가지고 각각의 경우이 같은 그렇지 조건 경우이 안에있다 : 나는 다시 시도 버튼을 누른 후 다음

문제 입니다 (IF-그렇지 않은 상태에서) Do Loop의 중간에서 돌아가서 확인하기 위해 다시 실행하고 싶습니다. 어떻게해야하는지 잘 모르겠습니다. 도움이 될 것입니다.

+2

'continue;'...... –

+0

게시물에 표준 영어 대문자와 구두점을 사용하십시오. – JLRishe

답변

2

스위치 케이스가 루프 본문 하단에있는 경우 continue을 호출하면 루프가 시작부터 반복됩니다.

루프의 중간에서 시작해야하고 시작이 아니라면, 내가 생각할 수있는 유일한 방법은 다른 루프 본문에서 중간을 래핑하는 것입니다. 이제 continue이 내부 루프에 적용되며 원하는 것을 얻을 수 있습니다. 당신이 거대한 루프 스위치 성명에서이 같은 코드를 구성 할 것입니다 왜

다른 옵션, 당신은 goto을 사용할 수 없습니다 경우

하지만

+0

"다른 옵션이 없다면 고토를 사용할 수 있습니다."... 그러나 이것은 자신과 타인을 해칠 수 있음을 명심하십시오 (http://www.u.ar.is.edu/~rubinson/copyright_violations/Go_To_Considered_Harmful). html) – Jeff

1

beware the consequences은 난 정말 모르겠어요. 나를 위해, 아마 그걸 깨뜨릴거야. 따라하기가 더 쉬울 것입니다. 그러나 아마 당신에게는 이유가 있습니다.

가능한 경우 내부 루프를 만들고 재 시도되지 않은 값이 반환 될 때까지 해당 루프를 계속 실행하십시오.

실제로 작동하지 않는 경우 goto을 사용하는 것이 아닙니다. 나는 많은 사람들에게 금기시되고 있지만 제 목표는 명확한 코드를 작성하는 것입니다. 그리고 당신이 무엇을하고 있고 가장 명확한 코드로 결과가 goto인지 안다면, 나는 그것에 대해 말합니다.

+0

'goto'는 남용하기 쉽지만 명확하고 이해하기 쉬운 방법으로도 쉽게 사용할 수 있습니다. – dreamlax

+0

맞아요, 개발자는 더 고급 구조라는 측면에서 매우 편안하게 생각할 때까지는 개발자가 '고토'를 피하는 것이 좋습니다. 그러나 일단 개발자가이 점에 도달하면 결코 'goto'를 사용하지 않는 것이 바보 같다고 생각합니다. –

0

가독성과 유지 관리 관점에서 코드를 함수로 분할하고 싶을 것입니다. 이것을 시도해 보시기 바랍니다 :

do 
{ 
    if(eErrorCode!=0) 
    { 
    if(GetResult(eErrorCode) == "Break") 
     break; 
    } 
} 

private string GetResult(eErrorCode) 
{ 
    switch(eErrorCode) 
    ... 
}