我正在查看一些旧的VB代码,我遇到了像这样的函数定义 -
Private Function ExistingCustomer(Index As Integer, Customer As String) As Integer
Private Sub cmdCustomerList_Click()
有什么区别吗?
我正在查看一些旧的VB代码,我遇到了像这样的函数定义 -
Private Function ExistingCustomer(Index As Integer, Customer As String) As Integer
Private Sub cmdCustomerList_Click()
有什么区别吗?
函数返回值,子程序不返回值。非常简单明了。
一个函数也可以用于表达式中,而子程序则不行。与子程序相比,函数可以更好地提高代码的可读性。
以下是函数如何增加可读性的示例:
If AccountIsLocked("JJones") then Msgbox("This account is locked")
这个函数应该在某个地方被定义。
public function AccountIsLocked(UserId as string) as boolean
dim usr = uow.AccountRepository.UserInfo(UserId)
return usr.locked
end function
这里是同样的例子,但使用了子程序编码:
CheckIfAccountLocked("JJones")
并且在其他地方定义了这个子程序:
public sub CheckIfAccountLocked(UserId)
if uow.AccountRepository.UserInfo(UserId).locked then
msgbox("Account is locked")
end if
end sub
还要注意,检查值与操作是分开的——这有助于职责分离。该函数倾向于重用。
在VB6中,圆括号有一些奇怪的规则。如果子过程没有参数,则不需要括号(我想Visual Studio可能会删除括号)。解决这个问题的一种方法是在子过程之前添加关键字“Call”。
Call CheckIfAccountLocked()
对比
CheckIfAccountLocked
在函数中,我们可以返回布尔值、字符串和其他数据类型的值。
但是子程序不返回任何东西。它只执行我们给定的代码和指令。这些也被称为方法。
子程序也用于控件的事件,这些事件也不返回任何值。
例如,命令按钮的点击事件:
Private sub cmd_click()
end sub
在VB6中,Sub和Function有什么区别?
"Sub"可以执行某些操作。 "Sub"不返回任何值。
例如:
Form_Load()
"Function"也可以执行某些操作,但它还会向调用它的地方返回一些值。 也就是说,"Function返回一个值,通常基于一个变量"
例如:
Val(),FormatPercentage()。
它们都是编写代码的部分,但函数必须返回一个值。例如,如果您有一个程序需要多次执行复杂的数学过程,您可以简单地创建一个函数并将复杂的数学代码放在其中,每当需要进行计算时,只需调用该函数即可。希望这有所帮助,不确定我是否解释清楚。
VB中的函数
VB中的子程序