2009-05-06 5 views
21

Có VB6 tương đương với từ khóa C/C++ 'tiếp tục' không?C/C++ 'tiếp tục' Tương đương trong VB6

Trong C/C++, lệnh 'tiếp tục' bắt đầu lặp tiếp theo của vòng lặp.

Tất nhiên, tương đương khác tồn tại. Tôi có thể đặt mã còn lại của vòng lặp trong câu lệnh if. Ngoài ra, tôi có thể sử dụng một goto. (Ugh!)

Trả lời

19

Không tương đương với VB6, nhưng các phiên bản sau của VB sẽ giới thiệu từ khóa này. Bài viết này có giải thích chi tiết hơn: http://vbnotebookfor.net/2007/06/04/the-continue-statement/

Có lẽ bạn có thể cấu trúc lại mã để thêm câu lệnh if hoặc có vòng lặp chỉ cần gọi hàm mà bạn có thể quay lại.

2

Tôi đang là một thằng ngốc: P nhờ MarkJ

For index As Integer = 1 To 10 
     If index=9 Then 
      Continue For 
     End If 
    'some cool code' 
    Next 

Không xin lỗi chỉ cho .net. Tôi nghĩ rằng bạn phải sử dụng goto, tôi biết nó trông 'sạch hơn' để sử dụng tiếp tục nhưng không có gì sai khi đi tuyến đường nếu.

sai.

Continue: 
    For index As Integer = 1 To 10 
       If index=9 Then 
        GoTo Continue 
       End If 
    'some cool code' 
    Next 

chỉnh

 For index = 1 To 10 
     If index=9 Then 
     GoTo Continue 
     End If  
    'some cool code' 
Continue: 
    Next 

ghét vb

+1

Nhãn của bạn không đúng. Điều đó sẽ khởi động lại vòng lặp từ 1 mỗi lần - vòng lặp vô hạn. Theo ý kiến ​​của tôi, tốt nhất là nên đặt nó ngay trước Kế tiếp. Trong thực tế bạn đã có một trường hợp nghiêm trọng của mã không khí;) Bạn đã bao gồm "As Integer" trong câu lệnh VB6 For, không hợp lệ VB6, và bạn đã sử dụng i và chỉ mục cho tên biến trong cả VB.NET và VB6 của bạn. – MarkJ

+0

Rõ ràng đã không nhận được vào VBA6 (Office 2010), một trong hai. –

+0

Sử dụng goto để mô phỏng tiếp tục là một ví dụ tốt về lập trình IN TO một ngôn ngữ thay vì chỉ trong đó, như Steve McConnell sẽ đặt nó. –

6

Đáng buồn là có không Continue nếu VB6 (?) - đây là mới trong VB 2005, tôi tin.

Tôi sẽ không phải lúc nào cũng sợ các câu lệnh goto - đó là những gì hiệu quả của Tiếp tục, nhưng không cần một dòng được dán nhãn sau vòng lặp. Miễn là câu lệnh goto của bạn không nhảy xa, chúng sẽ luôn có thể đọc được, và nó có lẽ là giải pháp thanh lịch nhất cho vấn đề này.

Làm tổ khác nếu/sau đó/bên trong vòng lặp for thực sự là HARDER để đọc và duy trì sau một goto đơn giản đẹp (với nhận xét trên dòng goto có nội dung như "'đọc là Tiếp tục cho").

Chúc may mắn!

+1

Nói cách khác, "goto chỉ được coi là có hại khi không có lựa chọn thay thế tốt hơn". Một tình cảm tôi đồng ý hoàn toàn. (Trong các phiên bản đầu của BASIC, vòng lặp "while" được tạo ra với IF-THEN-GOTO, và nó không quá tệ miễn là các vòng lặp của bạn không quá lớn.) –

6

VB6 không có tuyên bố tiếp tục cho các vòng lặp. Bạn phải mô phỏng nó bằng cách sử dụng goto, if, hoặc vòng lặp khác.

//VB.net 
do 
    if condition then continue do 
    ... 
loop 
//VB6 equivalent (goto) 
do 
    if condition then goto continue_do 
    ... 
continue_do: 
loop 
//VB6 equivalent (if) 
do 
    if not condition then 
     ... 
    endif 
loop 

Bạn không thể sử dụng "exit while" trong VB6. Nhưng bạn có thể sử dụng goto.

While condition 

    if should_skip then goto mycontinue 

    'code 

    if should_break then goto outloop 

    mycontinue: 

Wend 

outloop: