VB6中Sub和Function有什么区别?

时间:2012-04-13 13:26:17

标签: vb6

我正在浏览一些旧的VB代码,我遇到了像这样的函数定义 -

 Private Function ExistingCustomer(Index As Integer, Customer As String) As Integer

 Private Sub cmdCustomerList_Click()

有什么区别?

8 个答案:

答案 0 :(得分:110)

函数返回值,Sub没有。就这么简单。

答案 1 :(得分:18)

也可以在表达式中使用函数。子程序不能。 函数可以比子例程更好地提供代码的可读性。

以下是函数如何提高可读性的示例:

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,有一些奇怪的规则来控制括号。如果sub没有参数,则不需要括号(我认为Visual Studio可能会删除括号)。解决此问题的一种方法是在您的子目录之前添加关键字“呼叫”。

Call CheckIfAccountLocked()

VS

CheckIfAccountLocked

答案 2 :(得分:4)

在函数中,我们可以将值作为布尔值,字符串和其他数据数据类型返回。

但是sub不返回任何东西。 它只是执行我们给出的代码和指令。这些也被视为方法

Sub也用于控件的事件,这些事件也不会返回任何值。

例如命令按钮的click事件: 私有子cmd_click()

结束子

答案 3 :(得分:3)

它们都是编写代码的部分,但函数必须返回一个值。例如,如果你有一个程序,其中需要执行复杂的数学过程多次,你只需要创建一个函数,并在那里有复杂的数学代码,任何时候你需要进行计算,你可以只调用函数。希望这有助于我不确定我是否解释得很好。

答案 4 :(得分:2)

VB6中Sub和Function之间有什么区别?

"的"可以执行一些动作。 "子"不返回任何值。

示例:

的Form_Load()

"的功能"也可以执行一些操作,但它也会返回一些值来调用它。  也就是说,"函数返回一个值,通常基于变量"

示例:

Val(),FormatPercentage()。

答案 5 :(得分:0)

vb中的功能

  • 一个函数必须返回一些值/ s
  • 语法: private function fun_name(参数/ s(可选))as return_type(integer,string ..)  回报价值  结束功能
  • fun_name(arguments(可选))足以进行函数调用

sub in vb

  • 一个sub不需要返回任何值/ s
  • 语法: private sub sub_name(参数/ s(可选))

    end sub

  • sub_name(arguments(可选))足以进行函数调用

答案 6 :(得分:-1)

  1. 函数语法为Function ... End函数,Sub为Sub ... End Sub。
  2. 功能可能有也可能没有对象,但子没有对象
  3. 功能可在Sub不
  4. 的地方重复使用
  5. 函数可以返回值,但sub不会
  6. 函数可能包含对象存储库,但sub不能
  7. 功能扩展名为.qfl,其中包括sub。< sv。

答案 7 :(得分:-2)

一个函数保存数据和代码。但子程序只包含代码,但不包含数据。