语法:VB.NET子例程中的"Exit Sub"或"Return"

Jef*_*eff 56 vb.net syntax return subroutine

"Exit Sub"或"Return"似乎都完成了同样的事情 - 退出子程序.他们的工作方式有何不同?

那是,

Private Sub exitNow()
    Exit Sub
End Sub
Run Code Online (Sandbox Code Playgroud)

要么

Private Sub exitNow()
    Return
End Sub
Run Code Online (Sandbox Code Playgroud)

RBa*_*ung 65

来自doc:

在Sub或Set过程中,Return语句等效于Exit Sub或Exit Property语句,并且不能提供表达式.

所以他们在这种情况下是一样的.


Mik*_*ike 18

我倾向于选择ReturnExit Sub.因为在一段时间,一旦你从改变SubFunction.在这种情况下Exit Sub可以转换为Exit Function,但这假设有一个先前的函数名称赋值(类似VB 6),这很可能没有发生.Return会抓住这种情况 - 如果方法应该返回一个值,Return没有参数会在编译时失败.


小智 6

如果检查2个语句的IL输出,它们是相同的.但是,由于'return'用于将某些东西推回给调用者,所以严格来说,'Exit Sub'更适合在Sub中使用.

  • 实际上回归有两个含义.对于函数,它意味着将某些东西返回给调用者,而在函数和子函数中,它意味着将执行返回到调用位置.在大多数语言中都是这种情况,并带有"return"关键字."Exit Sub"仅用于与.NET之前的向后兼容. (3认同)
  • 我不同意“ *'Exit Sub'更适合在Sub。*中使用。”`Exit Sub`没错,但是它特定于Visual Basic。在由C启发的所有语言中,return都用于退出子程序:C#,java,C ++,Objective-C。 (2认同)