2011-01-05 3 views
9

나는 내가 사용하는 응용 프로그램에 대한 몇 가지 샘플 소스 코드를 찾아 봤는데 내가이 줄을 건너 온 :C# 응용 프로그램에서 "for (;;)"을 사용합니까?

for (;;) 
{ 
// The rest of the application's code 
} 

"이 무한 루프를 만드는 것 같습니다,하지만 난에 익숙하지 않은 해요 ;; " 불행히도 Google에게는 매우 어렵습니다.

+1

[C# for 루프는 모든 표현식이 누락 된 경우 어떻게합니까?eg for (;;) {}] (http://stackoverflow.com/questions/697307/what-does-ac-for-loop-do-when-all-the-expressions-are-missing-eg-for) – paxdiablo

답변

12

예, 무한 루프입니다. 조건식이없는 일반 for 루프입니다. 에서

documentation for for :

문에 대한의 표현은 모두 선택 사항입니다 예를 들어, 다음 문은 무한 루프를 작성하는 데 사용됩니다

for (; ;) 
{ 
    // ... 
} 
+0

고마워요, 일반적인 관행 (IE : 해킹이 아닙니까?) – JuniorDeveloper1208

+2

한 가지주의해야 할 점은 끝내지 않는 루프가 일반적으로 좋지 않은 상태가되도록하기 위해 중단해야하는 조건이 있어야한다는 것입니다. @toleero , 그것은 스타일의 문제입니다. 대신'while (true) {}'루프를 사용하고 싶습니다. 이것은 IMO 지점에서보다 직선이지만 어느 쪽이든 표준 관행입니다. –

+1

@ t84 - 가독성을 위해 많은 사람들이'while (true) {}'를 사용합니다. – Oded

7

는 무한 루프입니다. 이 문서에서 동일

while (true) { 
} 
0

재미있는 읽기 :

http://csharpdevelop.blogspot.com/2004/05/writing-infinite-loop.html

코드의이 종류는 어떤 작업을 할 기다리고 작업자 스레드에서 꽤 을 발생합니다. 공통 코드 패턴입니다. 반복문 의 모든 코드는 매우 중요합니다. "quit 조건"을 자주 검사해야합니다. 이것은해야 할 일이 이어야 함을 의미합니다. 일반적으로이 작은 하나의 작은 작업의 큰 집합을 달성하기 위해 주어진 작업입니다.

1

이것은 for (<initial>; <condition>; <increment>)과 동일합니다. 즉, 초기 상태, 증분 및 증분 만 제외하면됩니다. 이 경우 조건은 항상 true로 간주됩니다.

1

예, 그것은 무한 루프의에 대한

예를 들어, 다음 문은 무한 루프를 작성하는 데 사용됩니다.

for (;true;) 

나 : 다음 for 문에

모든 매개 변수는이 같은, 그래서 true에 조건의 기본값은 선택 사항이며

while (true) 
0

루프가 이러한 요소에 대한 정상적인

for (for-initializer ; for-condition ; for-iterator) embedded-statement 

예 :

for(int i = 0 ; i < 10 ; i++) { 
    foo(); 
} 

이러한 요소의 모든

를 생략 할 수 있으며, 무한 루프입니다 for(;;), 왼쪽 있습니다. 위한 조건 문 로부터 생략되는 경우

C# 언어 specification 구체적

을 미국, 명확한 지정 진행 후 평가 조건 상기 참된 로 대체 하였다 것처럼 확장.

그래서, for(;;) 난 그냥 명확히 할 for(;true;)

2

과 동일합니다 :

;; 특별한 운영자 또는 무언가가 아니다 - 그것은 루프에 대한 정기적입니다. 루프

규칙은 다음과 같습니다

for (do_before_loop**;** finish_loop_when_this_condition_is_false**;** do_after_each_iteration);

모든 3 개 부분은 당신이 ;;을 얻을 비워두면 - 당신은 종료 조건을 가지고 있지 않기 때문에 -이 무한 루프입니다. 일반적으로

3

당신이처럼 루프를 작성 :

for (int i = 0; i < 10; i++) 
{ 
// The rest of the application's code 
} 

를 이제, 당신이 당신의 루프는 무한 하나가 될하려는 경우, 당신은 단지 제거해야하는 "값 int 전 = 0"상태 "내가 < 10" , 그리고 증가 "i ++". 이렇게하면 for 문에서 ";;"

for (;;) 
{ 
// The rest of the application's code 
} 
+1

기술적으로 루프가 무한대이기 위해서는 제거해야하는 것은 조건 (i <10)입니다. –

0

일반적으로 무한 루프가 사용됩니다. 루프 내에서 코드를 실행해야하는 횟수를 모를 경우를 대비하여이 루프를 사용합니다. 그러므로 우리는이 루프를 빠져 나가기위한 조건을 정의 할 필요가있다. 다음은 서버에서 긴 메시지를 수신의 예입니다

for (;;) 
{ 
    //Receive the maximum allowed size of the message 
    //Save(Concatenate) the received data in a variable (TotalReceivedData) 
    // If the length of the received part of the message is equal to zero , break the operation 
    //<Break the loop>if(message.length == 0){break;}</Break the loop> 
} 

그리고 여기에 당신은 당신의 전체 수신 된 메시지가 변수 TotalReceivedData에 저장되어 사용할 수 있습니다.

방금 ​​이런 경우가있어서이 예제를 추가했습니다.

관련 문제