首页 /编程语言和算法/VB6/ASP
 VB6 ByRef和ByVal的区别
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和默认更占用资源。

 
全部回复(0)
首页 | 电脑版 |