2011-01-05 7 views
9

मैं एक आवेदन पत्र का उपयोग मैं के लिए कुछ नमूना स्रोत कोड के माध्यम से देख रहा था और मैं इस रेखा के पार पहुंचासी # अनुप्रयोग में "के लिए (;;)" का उपयोग करें?

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

ऐसा लगता है कि यह एक अनंत लूप बनाने के लिए है की तरह है, लेकिन मैं से परिचित नहीं हूँ " ;; " और दुर्भाग्य से Google के लिए यह बहुत मुश्किल है।

+1

निश्चित डुप्लिकेट [लूप के लिए सी # क्या करता है जब सभी अभिव्यक्तियां गायब होती हैं।उदाहरण के लिए (;;) {}] (http://stackoverflow.com/questions/697307/what-does-ac-for-loop-do-when-all-the-expressions-are-missing-eg-for) – paxdiablo

उत्तर

12

हां, यह एक अनंत लूप है। यह लैंड के लिए कोई शर्त अभिव्यक्ति नहीं है।

से documentation for for:

बयान के लिए की अभिव्यक्ति के सभी वैकल्पिक हैं; उदाहरण के लिए, निम्न कथन अनंत लूप लिखने के लिए प्रयोग किया जाता है:

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

धन्यवाद, क्या यह सामान्य प्रथा है (आईई: एक हैक नहीं?) – JuniorDeveloper1208

+2

ध्यान देने योग्य एक बात यह है कि आपके पास एक शर्त होनी चाहिए जिस पर इसे तोड़ना है, एक गैर-अंतराल लूप आमतौर पर खराब है ... @toleero , यह शैली का मामला है। मैं इसके बजाय 'जबकि (सत्य) {}' लूप का उपयोग करना चाहता हूं, यह आईएमओ बिंदु पर अधिक सीधे है, लेकिन कोई भी मानक अभ्यास है। –

+1

@ t84 - काफी आम है, हालांकि कई लोग पठनीयता के लिए 'सत्य (सत्य) {} 'का उपयोग करते हैं। – Oded

7

यह अनंत लूप है।

बराबर

को
while (true) { 
} 
0

इस लेख में दिलचस्प पढ़ने:

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

कोड इस तरह की कुछ काम करने के लिए के लिए इंतजार कार्यकर्ता धागे में काफ़ी होता है। यह एक सामान्य कोड पैटर्न है। लूपिंग बयान में सभी कोड महत्वपूर्ण है। " स्थिति छोड़ें" को अक्सर जांचना चाहिए। इसका तात्पर्य है कि काम करने के लिए होना चाहिए। आम तौर पर के बड़े सेट से काम का चक एक छोटा काम पूरा करने के लिए दिया गया था।

1

यह for (<initial>; <condition>; <increment>) जैसा ही है, आप बस प्रारंभिक, स्थिति और वृद्धि को छोड़ रहे हैं। इस मामले में, स्थिति हमेशा सच माना जाएगा।

0

यदि आप रुचि रखते हैं तो Google में यह पहली प्रविष्टि है, मैंने सी # के लिए googled; और यह लिंक http://msdn.microsoft.com/en-us/library/ch45axte.aspx क्लिक करें सी # और एमएसडीएन राज्य:

सभी कथन के सभी अभिव्यक्ति वैकल्पिक हैं; (;) { // ... }

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(;;), जो अनंत लूप है के साथ छोड़ दिया जाता है।

सी # भाषा 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 i = 0", हालत "मैं < 10" , और वृद्धि "i ++" वृद्धि। यदि आप ऐसा करते हैं, तो एक कथन में आप केवल ";;" देखेंगे

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 में संग्रहीत कर सकते हैं।

मैंने इस उदाहरण को जोड़ा क्योंकि मैं अभी इस तरह के मामले में आया था।

संबंधित मुद्दे