What is the difference between Sub and Function in VB6?
我正在浏览一些旧的vb代码,遇到了类似这样的函数定义-
1 2 3 | Private Function ExistingCustomer(Index As Integer, Customer As String) As Integer Private Sub cmdCustomerList_Click() |
有什么区别?
函数返回值,Sub不返回。这很简单。
函数也可以在表达式中使用。子例程不能。函数可以比子例程更好地提高代码的可读性。
以下是函数如何提高可读性的示例:
1 | If AccountIsLocked("JJones") then Msgbox("This account is locked") |
这个函数将在某个地方定义
1 2 3 4 | public function AccountIsLocked(UserId as string) as boolean dim usr = uow.AccountRepository.UserInfo(UserId) return usr.locked end function |
下面是相同的示例,但使用子例程编码:
1 | CheckIfAccountLocked("JJones") |
在其他地方,本小节定义为:
1 2 3 4 5 | public sub CheckIfAccountLocked(UserId) if uow.AccountRepository.UserInfo(UserId).locked then msgbox("Account is locked") end if end sub |
还要注意,检查值与操作是分离的——这有助于职责分离。该功能有助于实现可重用性。
对于vb6,有一些奇怪的规则控制括号。如果Sub没有参数,则不需要括号(我认为Visual Studio可能会删除括号)。解决这个问题的一种方法是在Sub之前添加关键字"call"。
1 | Call CheckIfAccountLocked() |
VS
1 | CheckIfAccountLocked |
在函数中,我们可以返回布尔值、字符串和其他数据类型的值。
但是Sub不返回任何东西。它只是执行我们给出的代码和指令。这些也被认为是方法
Sub也用于控件的事件,这些事件也不返回任何值。
例如,命令按钮的Click事件:private sub命令单击()。
结束子
它们都是编写代码的部分,但是函数必须返回一个值。例如,如果您有一个程序,其中一个复杂的数学过程需要执行多次,那么您只需生成一个函数,并在其中包含复杂的数学代码,并且任何时候您需要进行计算,那么您可以调用该函数。希望这对我解释得不好有帮助。
在vb6中,sub和function有什么区别?
"Sub"可以执行一些操作。"Sub"不返回值。
例子:
FuffyLoad()
"函数"也可以执行一些操作,但它还返回一些值到调用它的点。也就是说,"函数返回一个值,通常基于一个变量"
例子:
val(),formatPercentage()。
VB中的函数
- 函数必须返回一些值
- Syntax:private函数fun_name(argument/s(可选))作为返回类型(integer,string..)返回值端函数
- fun_name(参数(可选))足以进行函数调用
VB中的子
- Sub不需要返回任何值
Syntax:私有子名称(参数/s(可选))
结束子
- 子名称(参数(可选))足以进行函数调用
函数保存数据和代码。但是子例程只包含代码,而不包含数据。