2009-05-06 37 views
73

Có một số liệu 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.VB.NET - Cách di chuyển đến mục tiếp theo a Đối với mỗi vòng lặp?

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 để báo cáo kết quả Nếu vậy 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 cho mục tiếp theo trong danh sách Items. 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 câu lệnh Else, 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.

Trả lời

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

    ' Do something 
Next 
+0

Cảm ơn đây là chính xác những gì tôi đang tìm kiếm, vui như thế nào nó không phải trong tài liệu MSDN ?? (http://msdn.microsoft.com/en-us/library/5ebk1751.aspx) Cũng chúc mừng đánh bại Jon tới bài viết, trong 20 giây! :) –

+5

Tôi gần như đã bị Skeeted một lần nữa! ;) –

41

Tôi muốn sử dụng câu lệnh Continue thay vì:

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 là hơi khác nhau để di chuyển iterator cứ vào - bất cứ điều gì trước khi If sẽ được thực hiện một lần nữa. 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 một cách rõ ràng hơn là sử dụng vòng lặp For Each.

3

về gì:

If Not I = x Then 

    ' Do something ' 

End If 

' Move to next item ' 
2

Tôi muốn được rõ ràng rằng đoạn mã sau không phải là thói quen tốt. Bạn có thể sử dụng 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 
+15

Bạn có thể, nhưng xin đừng. – MiseryIndex

+0

Do nhảy, do đó nó là xấu. –

+2

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

1

Khi tôi cố gắng Continue For nó không thành công, tôi nhận được một lỗi biên dịch. Trong khi thực hiện việc này, tôi đã phát hiện '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 tại đây.

+0

Mã này thậm chí không hoạt động trong VBA. 'Tiếp tục Tiếp theo' là để xử lý lỗi không có cấu trúc. –

Các vấn đề liên quan