我正在浏览一些旧的VB代码,我遇到了像这样的函数定义 -
Private Function ExistingCustomer(Index As Integer, Customer As String) As Integer
Private Sub cmdCustomerList_Click()
有什么区别?
答案 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中的功能
sub in vb
语法: private sub sub_name(参数/ s(可选))
end sub
答案 6 :(得分:-1)
答案 7 :(得分:-2)
一个函数保存数据和代码。但子程序只包含代码,但不包含数据。