首先,我知道使用Goto
永远不是一个好主意。但是我很难看到以下结构之间的区别......所有这些都按顺序处理条件,当找到真值时停止处理,然后将控制权返回到代码中的指定位置(下一行) ,就像这个特定目标所在的那样。有什么区别:
如果使用GoTo:
If ConditionA then 'This is designed to skip the evaluation of condition B if condition A is met.
Do something
Goto Resume
End If
If ConditionB then
Do something
Goto Resume
End If
Resume:
选择案例
Select ConditionIsTrue 'This will also skip the evaluation of B if A is true.
Case A
Do something
Case B
Do something
End select
单独子:
EvaluateConditions(condition)
Sub EvaluateConditions(condition)
If A then
DoSomething
Exit Sub
End If
If B then
DoSomething
Exit Sub
End If
End Sub
答案 0 :(得分:2)
一般来说,
'转到'将执行控制权转移到您要分配的标签。控件永远不会回到您使用的位置' goto'。由于程序流程完全改变,因此不建议使用' goto'。调试变得困难。
当您编写子程序并从代码的其他部分调用它时,一旦子程序的执行完成,控制就会转移回代码的被调用部分。因此,与goto不同,程序流程不会受到影响,并且始终建议使用子程序而不是goto。
如果是select语句,它与多个&if; else-else'没有多大区别。声明。而不是有太多“if-else'你可以使用'选择'有更清洁的代码。
具体到你所要求的,所有三个都是一样的,并且没有差别。您选择的内容取决于您的要求,条件数量,代码片段的可重用性以及未来的增强功能。
如果您的条件非常少(2或3),并且如果您确定该条代码不需要将来的增强功能,那么它就是“好”。使用goto。(仍然不是一个很好的选择)
如果这段代码应该是可重用的,甚至是其他的,使用子程序是最好的选择。事实上,即使你的条件很少,也最好使用“选择”。子程序中的语句,以便您的代码看起来干净,并且将来很容易添加更多条件。