ByVal是按值传递,形参的改变不会造成实参的改变。
ByRef是按地址传递,形参的改变会造成实参的改变。
这就像是其它语言中的引用传递一样,如php中的 &$args
举个例子:
Module Module1
Sub Main()
Dim i As Integer = 10
value1(i)
'ref1(i)
default1(i)
Console.WriteLine(i)
End Sub
Sub value1(ByVal i As Integer)
i = 5
Console.WriteLine(i)
End Sub
Sub ref1(ByRef i As Integer)
i = 15
End Sub
Sub default1(i As Integer)
i = 20
End Sub
End Module
'value输出的结果i=10 'ref1输出的结果i=15 '如果不指定,默认是ByVal