Câu hỏi VB.NET - Làm thế nào để chuyển sang mục kế tiếp a For Each Loop?


Có một bức tượng như Exit For, ngoại trừ thay vì thoát khỏi vòng lặp nó chỉ chuyển sang mục tiếp theo.

Ví dụ:

For Each I As Item In Items

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

    ' Do something

Next

Tôi biết có thể chỉ cần thêm một Else vào câu lệnh If để nó sẽ đọc như sau:

For Each I As Item In Items

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

Next

Chỉ cần tự hỏi nếu có một cách để nhảy đến mục tiếp theo trong Items danh sách. Tôi chắc chắn hầu hết sẽ hỏi chính xác tại sao không chỉ sử dụng Else tuyên bố, nhưng để tôi gói mã "Do Something" có vẻ ít dễ đọc hơn. Đặc biệt là khi có nhiều mã hơn.


76
2018-05-06 13:53


gốc




Các câu trả lời:


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

    ' Do something
Next

148
2018-05-06 13:56



Cảm ơn đây là chính xác những gì tôi đang tìm kiếm, vui như thế nào không phải của nó trong các tài liệu MSDN ?? (msdn.microsoft.com/en-us/library/5ebk1751.aspx) Cũng chúc mừng đánh bại Jon tới bài đăng, trong 20 giây! :) - Sean Taylor
Tôi gần như đã bị Skeeted một lần nữa! ;) - Adam Robinson


Tôi sẽ sử dụng Continue thay vào đó:

For Each I As Item In Items

    If I = x Then
        Continue For
    End If

    ' Do something

Next

Lưu ý rằng điều này hơi khác để di chuyển bản thân trình lặp trên - bất kỳ thứ gì trước If sẽ được thực thi lại. Thông thường đây là những gì bạn muốn, nhưng nếu không bạn sẽ phải sử dụng GetEnumerator() và sau đó MoveNext()/Current rõ ràng hơn là sử dụng For Each vòng lặp.


42
2018-05-06 13:56





Thế còn:

If Not I = x Then

  ' Do something '

End If

' Move to next item '

3
2018-05-06 13:57





Tôi muốn được rõ ràng rằng các mã sau đây không phải là thực hành tốt. Bạn có thể sử dụng nhãn GOTO:

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



Bạn có thể, nhưng xin đừng. - MiseryIndex
Do nhảy, do đó nó là xấu. - Syed Tayyab Ali
Nếu nó không phải là thực hành tốt, và có một giải pháp rõ ràng hơn mà ngôn ngữ hỗ trợ (Tiếp tục cho / tiếp tục tiếp theo), có lẽ câu trả lời này nên được tự nguyện loại bỏ. - eniacAvenger


Khi tôi thử Continue For Không thành công, tôi gặp lỗi trình biên dịch. Trong khi làm điều này, tôi phát hiện ra 'Tiếp tục':

For Each I As Item In Items

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

    'Do something

Next

Lưu ý: Tôi đang sử dụng VBA ở đây.


0
2017-09-28 11:28



Mã này thậm chí không hoạt động trong VBA. Resume Next dành cho xử lý lỗi không có cấu trúc. - Daniel