查看: 469  |  回复: 0
  VB6 ByRef和ByVal的区别
楼主
发表于 2024年3月13日 20:34

新建From1(窗体),新建Command1(按钮CommandButton),代码:

Private Sub Command5_Click()
    Dim intA As Integer
    intA = 0: Call s_1(intA): Debug.Print intA
    intA = 0: Call s_2(intA): Debug.Print intA
    intA = 0: Call s_3(intA): Debug.Print intA
End Sub

Private Sub s_1(intA As Integer) '等效于ByRef
    intA = 1
End Sub

Private Sub s_2(ByRef intA As Integer)
    intA = 2
End Sub

Private Sub s_3(ByVal intA As Integer)
    intA = 3
End Sub

运行结果:

 1 
 2 
 0

ByRef:(默认情况下,当省略传递类型时,默认值是 ByRef)传递变量时,将该变量的引用地址传入过程或函数。传入引用地址意味着,在过程或函数内部对其修改时,也会影响上一级过程(父过程)中的变量的值。

ByVal:传递变量时,复制一份该变量,传入过程或函数。在过程和函数内部对该变量进行修改,只对该副本有效,对上一级过程(父过程)的变量没有影响。

由于ByVal会产生副本,会新建存储空间,所以比ByRef和默认更占用资源。

您需要登录后才可以回帖 登录 | 立即注册
【本版规则】请勿发表违反国家法律的内容,否则会被冻结账号和删贴。
用户名: 立即注册
密码:
2020-2024 MaNongKu.com