语法: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 。 因为有一段时间你从SubFunction 。 在这种情况下, 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