语法:"出口子"或"返回"在VB.NET 子程序
-
05-07-2019 - |
题
这两个"出口子"或"返回"似乎完成同样的事情--退出一个子程序。是否有任何差异如何,他们的工作下涵盖了?
就是
Private Sub exitNow()
Exit Sub
End Sub
或
Private Sub exitNow()
Return
End Sub
解决方案
来自doc:
在Sub或Set过程中,Return语句等同于Exit Sub或Exit Property语句,并且不得提供表达式。
所以在这种情况下他们是一样的。
其他提示
我倾向于返回
而不是 Exit Sub
。因为偶尔你会从 Sub
改为 Function
。在这种情况下, Exit Sub
可以转换为 Exit Function
,但这假设先前对函数名称赋值(类似于VB 6),这很可能没有'发生了。 返回
会遇到这种情况 - 如果方法应该返回一个值,返回
没有参数将在编译时失败。
如果检查2个语句的IL输出,它们是相同的。但是,因为’返回’用于将某些东西推回呼叫者,严格来说,‘退出子’更适合在Sub中使用。
在这种情况下它们是相同的。
然而,从代码可读性的角度来看,“退出子”是指因为“返回”会更加清晰。表示某些值被用作输出的东西(子例程不是这种情况)。
- 首先,程序的附带子,我们应该知道,我们正在对具体程序,不返回特定的价值与能力通过一些具体的参数或甚至没有通过任何参数。例如:
- 打印的东西().
- 计算因子的整数
CalcFact(X)
. 做一些进程的特定任务。
函数是一个特定的过程编程,以实现一个具体的任务也通过一些特定参数,并且它必须返回某些价值,可以用来完成的总体任务,例如验证用户的名称和用户通过。
在短短的子不返回的价值和我们叫它直接 "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
不隶属于 StackOverflow