c# - सी#लूप-ब्रेक बनाम जारी




loops enumeration (10)

C # में (अन्य भाषाओं के लिए उत्तर देने के लिए स्वतंत्र महसूस करें) लूप, ब्रेक के बीच अंतर क्या है और लूप की संरचना को छोड़ने के साधन के रूप में जारी है, और अगले पुनरावृत्ति पर जाएं?

उदाहरण:

foreach (DataRow row in myTable.Rows)
{
    if (someConditionEvalsToTrue)
    {
        break; //what's the difference between this and continue ?
        //continue;
    }
}

अन्य भाषाओं के लिए के रूप में:

'VB
For i=0 To 10
   If i=5 then Exit For '= break in C#;
   'Do Something for i<5
next

For i=0 To 10
   If i=5 then Continue For '= continue in C#
   'Do Something for i<>5...
Next

उदाहरण द्वारा

foreach(var i in Enumerable.Range(1,3))
{
    Console.WriteLine(i);
}

प्रिंट 1, 2, 3 (अलग-अलग लाइनों पर)।

I = 2 पर एक ब्रेक की स्थिति जोड़ें

foreach(var i in Enumerable.Range(1,3))
{
    if (i == 2)
        break;

    Console.WriteLine(i);
}

अब लूप 1 प्रिंट करता है और बंद हो जाता है।

विराम को जारी रखें।

foreach(var i in Enumerable.Range(1,3))
{
    if (i == 2)
        continue;

    Console.WriteLine(i);
}

अब लूप प्रिंट 1 और 3 (स्किपिंग 2)।

इस प्रकार, break लूप को रोक break , जबकि अगले पुनरावृत्ति के लिए continue


कुछ से अधिक लोग हैं, जो break और continue पसंद नहीं करते हैं। नवीनतम शिकायत मैंने उनके बारे में देखी थी : डगलस क्रॉकफोर्ड द्वारा जावास्क्रिप्ट: द गुड पार्ट्स । लेकिन मुझे लगता है कि कभी-कभी उनमें से किसी एक का उपयोग करना वास्तव में चीजों को सरल करता है, खासकर अगर आपकी भाषा में लूप की एक do-while या do-until शैली शामिल नहीं है।

मैं ऐसे छोरों में break का उपयोग करता हूं जो किसी चीज की सूची खोज रहे हैं। एक बार मिल जाने के बाद, जारी रखने का कोई मतलब नहीं है, इसलिए आप छोड़ सकते हैं।

मैं सूची के अधिकांश तत्वों के साथ कुछ करते समय continue हूं, लेकिन फिर भी कुछ को छोड़ना चाहता हूं।

किसी व्यक्ति या किसी व्यक्ति की वैध प्रतिक्रिया के लिए मतदान करते समय break स्टेटमेंट भी काम आता है। के बजाय:

Ask a question
While the answer is invalid:
    Ask the question

आप कुछ दोहराव और उपयोग को समाप्त कर सकते हैं:

While True:
    Ask a question
    If the answer is valid:
        break

उस विशेष समस्या के लिए अधिक सुरुचिपूर्ण समाधान करने से पहले मैंने जो लूप do-until टू do-until लूप का उल्लेख किया है:

Do:
    Ask a question
    Until the answer is valid

कोई दोहराव नहीं, और किसी भी break जरूरत नहीं।


कृपया मुझे स्पष्ट बताएं: ध्यान दें कि न तो ब्रेक को जोड़ना और न ही जारी रखना, आपके कार्यक्रम को फिर से शुरू करेगा; यानी मैं एक निश्चित त्रुटि के लिए फंस गया, फिर इसे लॉग करने के बाद, मैं प्रसंस्करण फिर से शुरू करना चाहता था, और अगली पंक्ति के बीच में और अधिक कोड कार्य थे, इसलिए मैंने अभी इसे गिरने दिया।


यदि आप ब्रेक का उपयोग नहीं करना चाहते हैं तो आप I के मूल्य को इस तरह से बढ़ा सकते हैं कि इससे पुनरावृत्ति की स्थिति झूठी हो जाएगी और अगले पुनरावृत्ति पर लूप निष्पादित नहीं होगा।

for(int i = 0; i < list.Count; i++){
   if(i == 5)
    i = list.Count;  //it will make "i<list.Count" false and loop will exit
}

यह समझने का एक बहुत आसान तरीका है कि प्रत्येक कीवर्ड के बाद "लूप" शब्द रखा जाए। यदि वे रोज़मर्रा के वाक्यांशों की तरह ही पढ़े जाते हैं तो शब्द अब समझ में आते हैं।

break लूप - लूपिंग टूट जाता है और बंद हो जाता है।

लूप जारी रखें - लूप अगले पुनरावृत्ति के साथ निष्पादित करना जारी रखता है।


सभी ने बहुत अच्छी व्याख्या दी है। मैं अभी भी अपना जवाब पोस्ट कर रहा हूँ बस एक उदाहरण दे सकता हूँ अगर वह मदद कर सकता है।

// break statement
for (int i = 0; i < 5; i++) {
    if (i == 3) {
        break; // It will force to come out from the loop
    }

    lblDisplay.Text = lblDisplay.Text + i + "[Printed] ";
}

यहाँ उत्पादन है:

0 [मुद्रित] 1 [मुद्रित] 2 [मुद्रित]

तो 3 [मुद्रित] और 4 [मुद्रित] प्रदर्शित नहीं किया जाएगा क्योंकि जब मैं == 3 होता है तो वहां विराम होता है

//continue statement
for (int i = 0; i < 5; i++) {
    if (i == 3) {
        continue; // It will take the control to start point of loop
    }

    lblDisplay.Text = lblDisplay.Text + i + "[Printed] ";
}

यहाँ उत्पादन है:

0 [मुद्रित] 1 [मुद्रित] 2 [मुद्रित] 4 [मुद्रित]

तो 3 [मुद्रित] प्रदर्शित नहीं किया जाएगा क्योंकि वहाँ जारी है जब i == 3


सरल उत्तर:

ब्रेक तुरंत लूप को बाहर निकालता है।
जारी रखें अगले आइटम को संसाधित करना शुरू करें। (यदि कोई हो, तो / जबकि / के मूल्यांकन लाइन पर कूद कर)


break पूरी तरह से लूप से बाहर निकल जाएगा, continue बस चालू पुनरावृत्ति को छोड़ देगा।

उदाहरण के लिए:

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

    DoSomeThingWith(i);
}

ब्रेक के कारण लूप को पहली पुनरावृत्ति पर बाहर निकल जाएगा - DoSomeThingWith कभी भी निष्पादित नहीं किया जाएगा। यह इधर:

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

    DoSomeThingWith(i);
}

i = 0 लिए DoSomeThingWith निष्पादित नहीं करेगा, लेकिन लूप जारी रहेगा और DoSomeThingWith i = 1 से i = 9 लिए निष्पादित किया जाएगा।


टूटना

ब्रेक एक पाश को तुरंत बाहर निकलने के लिए मजबूर करता है।

जारी रहना

यह विराम के विपरीत है। लूप को समाप्त करने के बजाय, यह तुरंत फिर से लूप करता है, बाकी कोड को लंघन करता है।








enumeration