VB高手 来解答一下

来源:百度知道 编辑:UC知道 时间:2024/05/03 20:57:23
ByVal和ByRef的区别

ByVal 传送参数内存的一个拷贝给被调用者。也就是说,栈中压入的直接就是所传的值。ByRef 传送参数内存的实际地址给被调用者。也就是说,栈中压入的是实际内容的地址。被调用者可以直接更改该地址中的内容。ByVal是传递值 源数据不会被修改
你可以把这个值当作自己的局部变量来使用ByRef是传递地址 , 源数据可能被修改
你对这个变量的操作将对你传入的那个变量产生影响,就像指针的感觉 实例:sub Add1(ByVal no as int32)
no=no+100
end subsub Add2(ByRef no as int32)
no=no+100
end subprivate sub button1_click(sender as object,e as eventargs)handles button1.click
dim a as int32
a=100
Add1(a)
msgbox ("a的值为:" & a) '显示:a的值为100 Add2(a)
msgbox ("a的值为:" & a) '显示:a的值为200,因为Add2中的参数no为ByRef,即
'按地址传递,因此在Add2中对no进行修改后,将会导致
'源参数a的值也被修改。
End Sub

一个是按值传递,一个是按地址传递