2010-05-14 10 views
7

में कैसे काम करता है हाल ही में, एक पुस्तक में मैंने यह कोड पढ़ा। क्या आप इस कोड के माध्यमों को परिभाषित कर सकते हैं और यह कोड कैसे काम करता है।यह लूपिंग सी #

int i = 0; 
for (; i != 10;) 
{ 
    Console.WriteLine(i); 
    i++; 
} 
+0

दिलचस्प है, नहीं देखा कि पहले ... – Yoda

+0

@Yoda - शायद क्योंकि इसकी बुरा रूप है। कानूनी, लेकिन खराब रूप। –

+0

आश्चर्यचकित आपको इस प्रश्न के लिए कोई अपवर्त नहीं मिला है। मूल बातें वापस जाने के लिए +1। –

उत्तर

13

यह loops।

चूंकि आपने पहले से ही i=0 सेट किया है, इसलिए उन्होंने for लूप के उस अनुभाग को छोड़ दिया है। इसके अलावा, चूंकि आप अंत में परिवर्तनीय वृद्धि कर रहे हैं, इसलिए उन्होंने इसे छोड़ दिया है।

वे मूल रूप से थोड़ी देर के लिए लूप के लिए बदल गए।

for (int i = 0; i != 10; i++) 
{ 
    Console.WriteLine(i); 
} 

अपवाद है कि यह पत्ते के साथ:

int i = 0; 
while(i != 10) 
{ 
    Console.WriteLine(i); 
    i++; 
} 
+2

साथ ही मुझे लूप के बाहर एक बड़ा दायरा देने के लिए शुरू करना, यह लूप के भीतर किसी शर्त पर वृद्धिकर्ता को भी करने की अनुमति देता है, उदा। मैं + = 2 या i-- या कुछ, लूप के तीसरे भाग में निर्दिष्ट जो कुछ भी निर्दिष्ट करने के लिए क्षतिपूर्ति किए बिना। लेकिन हाँ, थोड़ी देर के रूप में मुझे लगता है कि – Jacob

+0

@ जैकोब, स्कोप कैच के लिए +1, मैंने इसके बारे में भी सोचा नहीं था। –

1

यदि यह आसान है सामान्य रूप में देखने के लिए, यह लगभग इस के बराबर है:

यह शायद और अधिक सुरुचिपूर्ण रूप में किया जाएगा लूप पूर्ण होने के बाद उपयोगकर्ता के लिए i उपलब्ध है, यह केवल for लूप पर नहीं है।

1

यह इस पाश के रूप में ही है:

for (int i = 0; i != 10; i++) { 
    Console.WriteLine(i); 
} 

छोड़कर, चर i पाश बाहर घोषित किया जाता है, तो यह गुंजाइश बड़ा है।

for लूप में पहला पैरामीटर प्रारंभिकरण है, दूसरा स्थिति है और तीसरा वृद्धि है (जो वास्तव में कुछ भी हो सकती है)। पुस्तक दिखाती है कि कैसे कोड में जगह पर इनटाइटलिसेशन और वृद्धि को स्थानांतरित किया जाता है जहां उन्हें वास्तव में निष्पादित किया जाता है। पाश भी बराबर while पाश के रूप में दिखाया जा सकता है:

int i = 0; 
while (i != 10) { 
    Console.WriteLine(i); 
    i++; 
} 

यहाँ चर i भी लूप के बाहर घोषित किया जाता है, तो गुंजाइश बड़ा है।

1

आप "के लिए" का उपयोग कर रहे हैं, की तरह एक "जबकि"

1

इस कोड, पुनः किया जा सकता है (अपने कोड स्निपेट के संदर्भ में - यह समकक्ष के रूप में कहा गया है नहीं है।) के रूप में:

for (int i = 0; i != 10; i++) 
    Console.WriteLine(i); 

मूल रूप से, प्रारंभिक अभिव्यक्ति और वृद्धि अभिव्यक्ति को लूप अभिव्यक्ति से बाहर निकाला गया है, जो पूरी तरह से वैकल्पिक हैं।

+0

मैं ध्यान दूंगा कि आपने जो पोस्ट किया है वह * समकक्ष * नहीं है, इसमें एक स्कोपिंग अंतर है। –

+0

धन्यवाद @ निक, आपके सुझाव के अनुसार संपादित। –

0

यह वही है के रूप में:

for (int i = 0; i != 10; i++) { 
    Console.WriteLine(i); 
} 

कृपया इस तरह कोड लिखने नहीं है। यह सिर्फ बदसूरत है और फॉर-लूप के उद्देश्य को हरा देता है।

2

बयान के लिए के लिए के रूप में

सी # कल्पना में परिभाषित किया गया है (के लिए-प्रारंभकर्ता; के लिए शर्त; के लिए-इटरेटर) एम्बेडेड बयान

सभी तीन प्रारंभिक के लिए, हालत, एक डी -iterator वैकल्पिक हैं। कोड काम करता है क्योंकि उन टुकड़ों की आवश्यकता नहीं है।

उत्सुक के लिए: यदि के लिए शर्तछोड़ दिया जाता है, पाश बर्ताव करता है के रूप में अगर वहाँ के लिए शर्त यह सच सामने आए एक था। इसलिए, यह के रूप में अनंत लूप अभिनय करेंगे, छोड़ने के लिए (तोड़, गोटो, फेंक, या वापसी) एक कूद बयान की जरूरत पड़ेगी।

0

int i शीर्ष पर घोषित किया गया था, इसलिए यह लूप में नहीं था। यह काफी की तरह

for(int i = 0; i!=10; i++) 
{ 
    /// do your code 
} 
संबंधित मुद्दे