VB6中Sub和Function有什么区别?


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(可选))

    结束子

  • 子名称(参数(可选))足以进行函数调用


  • 函数的语法将是函数…结束函数,for Sub将是Sub…结束Sub。
  • 函数可以有对象,也可以没有对象,但Sub没有对象
  • 功能在SUB不可用的情况下可重复使用
  • 函数可以返回值,但Sub不能
  • 函数可能有对象存储库,但Sub没有
  • 函数的扩展名为.qfl,其中sub的扩展名为.vba

  • 函数保存数据和代码。但是子例程只包含代码,而不包含数据。