सवाल वीबीएनईटी - प्रत्येक लूप के लिए अगले आइटम पर कैसे जाएं?


क्या कोई स्टेटमेंट है Exit For, लूप से बाहर निकलने के बजाय इसे केवल अगले आइटम पर ले जाता है।

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

For Each I As Item In Items

    If I = x Then 
        ' Move to next item
    End If

    ' Do something

Next

मुझे पता है कि बस एक जोड़ सकता है Else यदि कथन में तो यह निम्नानुसार पढ़ा जाएगा:

For Each I As Item In Items

    If I = x Then 
        ' Move to next item
    Else
        ' Do something
    End If

Next

बस सोच रहा है कि क्या अगले आइटम पर कूदने का कोई तरीका है या नहीं Items सूची। मुझे यकीन है कि ज्यादातर ठीक से पूछेंगे कि क्यों न सिर्फ इसका उपयोग करें Else कथन, लेकिन मुझे "कुछ करना" कोड लपेटने के लिए कम पठनीय लगता है। विशेष रूप से जब बहुत अधिक कोड होता है।


76
2018-05-06 13:53


मूल




जवाब:


For Each I As Item In Items
    If I = x Then Continue For

    ' Do something
Next

148
2018-05-06 13:56



धन्यवाद यह वही है जो मैं खोज रहा था, मजाकिया यह एमएसडीएन दस्तावेज में नहीं है ?? (msdn.microsoft.com/en-us/library/5ebk1751.aspx) पूरे 20 सेकंड तक, जॉन को पद पर मारने पर भी बधाई! :) - Sean Taylor
मैं लगभग एक बार फिर स्कीट मिला! ;) - Adam Robinson


मैं इसका इस्तेमाल करूंगा Continue इसके बजाय कथन:

For Each I As Item In Items

    If I = x Then
        Continue For
    End If

    ' Do something

Next

ध्यान दें कि यह इटरेटर को आगे बढ़ने के लिए थोड़ा अलग है - इससे पहले कुछ भी If फिर से निष्पादित किया जाएगा। आम तौर पर यह वही है जो आप चाहते हैं, लेकिन यदि आपको नहीं उपयोग करना है GetEnumerator() और फिर MoveNext()/Current स्पष्ट रूप से एक का उपयोग करने के बजाय For Each पाश।


42
2018-05-06 13:56





व्हाट अबाउट:

If Not I = x Then

  ' Do something '

End If

' Move to next item '

3
2018-05-06 13:57





मैं स्पष्ट होना चाहता हूं कि निम्नलिखित कोड अच्छा अभ्यास नहीं है। आप गोटो लेबल का उपयोग कर सकते हैं:

For Each I As Item In Items

    If I = x Then
       'Move to next item
        GOTO Label1
    End If

    ' Do something
    Label1:
Next

2
2018-05-06 13:59



आप कर सकते हैं, लेकिन कृपया नहीं। - MiseryIndex
कूदने के कारण, इसलिए यह बुरा है। - Syed Tayyab Ali
यदि यह अच्छा अभ्यास नहीं है, और स्पष्ट रूप से बेहतर समाधान है कि भाषा का समर्थन करता है (आगे बढ़ें / फिर से शुरू करें), हो सकता है कि यह उत्तर स्वेच्छा से हटा दिया जाना चाहिए। - eniacAvenger


जब मैंने कोशिश की Continue For यह असफल रहा, मुझे एक कंपाइलर त्रुटि मिली। ऐसा करने के दौरान, मैंने 'फिर से शुरू' की खोज की:

For Each I As Item In Items

    If I = x Then
       'Move to next item
       Resume Next
    End If

    'Do something

Next

नोट: मैं यहां वीबीए का उपयोग कर रहा हूं।


0
2017-09-28 11:28



यह कोड वीबीए में भी काम नहीं करता है। Resume Next असंगठित त्रुटि हैंडलिंग के लिए है। - Daniel