“Exit Sub”或“Return”似乎都完成了同样的事情 - 退出子程序。他们的工作方式有何不同?
那是,
Private Sub exitNow()
Exit Sub
End Sub
要么
Private Sub exitNow()
Return
End Sub
来自doc:
在Sub或Set过程中,Return语句等效于Exit Sub或Exit Property语句,并且不能提供表达式。
所以他们在这种情况下是一样的。
我倾向于选择Return
而不是Exit Sub
。因为偶尔你会从Sub
变成Function
。在这种情况下,Exit Sub
可以转换为Exit Function
,但这假设之前有一个函数名称的赋值(类似VB 6),这很可能没有发生。 Return
会捕获这种情况 - 如果方法应该返回一个值,那么没有参数的Return
将在编译时失败。
如果检查2个语句的IL输出,它们是相同的。但是,由于'return'用于将某些东西推回给调用者,所以严格来说,'Exit Sub'更适合在Sub中使用。
在这种情况下它们是相同的。
但是,从代码可读性的角度来看,“Exit Sub”会更清晰,因为“Return”表示某些值被用作输出(这与子例程不同)。
CalcFact(X)
的阶乘。简而言之,Sub不返回值,我们直接称之为"Print HelloWorld()"
,而函数则如下:
ValidUsersNameAndPass("Johne","jOhNe13042019")
'这可能会返回一个布尔值。ValidUsersNameAndPass("Johne","jOhNe13042019");
//这可能会返回一个布尔值。虽然有像保护条款这样的例外,但在大多数情况下,我会考虑这个方法太长的迹象。
我想确认它们在lambda表达式中的行为是一样的,并且它们确实:
Sub test()
Dim a As Action = Sub() Exit Sub
Dim b As Action = Sub() Return
a()
b()
MsgBox("Yes they do!")
End Sub