Vb6 无标签重写基本代码

Vb6 无标签重写基本代码,vb6,basic,qbasic,quickbasic,Vb6,Basic,Qbasic,Quickbasic,我有一些使用标签的代码,下面是一个示例: SUB occupy (x) occupied(x) = 0 FOR i = 1 TO 40 IF armyloc(i) = x THEN occupied(x) = i GOTO holdup ELSE END IF NEXT i holdup: END SUB 如您所见,它使用标签holdup跳出它所处的下一个循环。我不知道有什么好办法可以把它改成更好/合适的代码?例如,我通常会这样做: SUB occupy (x) occupi

我有一些使用标签的代码,下面是一个示例:

SUB occupy (x)
occupied(x) = 0
FOR i = 1 TO 40
IF armyloc(i) = x THEN 
    occupied(x) = i
    GOTO holdup
ELSE
END IF
NEXT i
holdup:
END SUB
如您所见,它使用标签holdup跳出它所处的下一个循环。我不知道有什么好办法可以把它改成更好/合适的代码?例如,我通常会这样做:

SUB occupy (x)
occupied(x) = 0
FOR i = 1 TO 40
IF armyloc(i) = x THEN 
    occupied(x) = i
    GOTO holdup
ELSE
       NEXT i
END IF
END SUB

但是这就产生了一个问题-FOR..NEXT循环现在嵌套在IF..THEN循环的一半中。关于解决此问题的方法有什么建议吗?

正如Mark Hall在上面的评论中所指出的,使用Exit For在这些情况下效果很好。删除GOTO并替换为Exit For语句。

Exit For?我不知道基本原理,但它出现在文档中,我想你可能是对的……但是我还没有找到一个例子来说明出口的实际用法。e、 例如,这个链接说要这样做,但没有显示完成后的确切外观。这个链接给出了一个示例:不幸的是,我现在没有一台启动VB6的计算机,但我认为语句体中任何地方的
退出都会导致循环退出。只需将
GOTO
语句替换为
Exit For
谢谢,Exit For works很棒!
SUB occupy (x)
occupied(x) = 0
FOR i = 1 TO 40
    IF armyloc(i) = x THEN occupied(x) = i: Exit For
NEXT i
END SUB