VB.NET - How to move to next item a For Each Loop?

后端 未结 6 1984
后悔当初
后悔当初 2020-12-13 22:50

Is there a statment like Exit For, except instead of exiting the loop it just moves to the next item.

For example:

For          


        
相关标签:
6条回答
  • 2020-12-13 23:19

    I'd use the Continue statement instead:

    For Each I As Item In Items
    
        If I = x Then
            Continue For
        End If
    
        ' Do something
    
    Next
    

    Note that this is slightly different to moving the iterator itself on - anything before the If will be executed again. Usually this is what you want, but if not you'll have to use GetEnumerator() and then MoveNext()/Current explicitly rather than using a For Each loop.

    0 讨论(0)
  • 2020-12-13 23:26

    What about:

    If Not I = x Then
    
      ' Do something '
    
    End If
    
    ' Move to next item '
    
    0 讨论(0)
  • 2020-12-13 23:26

    When I tried Continue For it Failed, I got a compiler error. While doing this, I discovered 'Resume':

    For Each I As Item In Items
    
        If I = x Then
           'Move to next item
           Resume Next
        End If
    
        'Do something
    
    Next
    

    Note: I am using VBA here.

    0 讨论(0)
  • 2020-12-13 23:28
    For Each I As Item In Items
        If I = x Then Continue For
    
        ' Do something
    Next
    
    0 讨论(0)
  • 2020-12-13 23:43

    Only the "Continue For" is an acceptable standard (the rest leads to "spaghetti code").

    At least with "continue for" the programmer knows the code goes directly to the top of the loop.

    For purists though, something like this is best since it is pure "non-spaghetti" code.

    Dim bKeepGoing as Boolean 
    For Each I As Item In Items
      bKeepGoing = True
      If I = x Then
        bKeepGoing = False
      End If
      if bKeepGoing then
        ' Do something
      endif
    Next
    

    For ease of coding though, "Continue For" is OK. (Good idea to comment it though).

    Using "Continue For"

    For Each I As Item In Items
      If I = x Then
        Continue For   'skip back directly to top of loop
      End If
      ' Do something
    Next
    
    0 讨论(0)
  • 2020-12-13 23:45

    I want to be clear that the following code is not good practice. You can use GOTO Label:

    For Each I As Item In Items
    
        If I = x Then
           'Move to next item
            GOTO Label1
        End If
    
        ' Do something
        Label1:
    Next
    
    0 讨论(0)
提交回复
热议问题