语法:VB.NET子例程中的“Exit Sub”或“Return”
“退出子”或“返回”似乎完成相同的事情 – 退出子程序。 封面上的工作方式有什么不同吗?
那是,
Private Sub exitNow() Exit Sub End Sub
要么
Private Sub exitNow() Return End Sub
从文档:
在Sub或Set过程中,Return语句等同于Exit Sub或Exit Property语句,并且不得提供expression式。
所以他们在这方面是一样的。
如果你检查2条语句的IL输出,它们是相同的。 然而,由于“返回”是为了将某些东西推回给调用者,所以严格来说,“退出子”更适合于在Sub中使用。
他们在这方面是一样的。
但是,从代码可读性的angular度来看,“Exit Sub”会更清晰,因为“Return”表示有些值被用作输出(而Sub-routines则不是这样)。
我倾向于selectReturn
Over Exit Sub
。 因为有一段时间你从Sub
到Function
。 在这种情况下, Exit Sub
可以被转换为Exit Function
,但是这个假定之前有一个赋值给函数名(类似于VB 6),这很可能没有发生。 Return
会捕获这种情况 – 如果方法应该返回一个值,那么在编译时不带参数的Return
将失败。
虽然有例外的守卫条款,但在大多数情况下,我会考虑这个方法太长的标志。
我想确认它们在lambdaexpression式中的行为也是一样的,而且它们是这样做的:
Sub test() Dim a As Action = Sub() Exit Sub Dim b As Action = Sub() Return a() b() MsgBox("Yes they do!") End Sub