首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

请问byref和byval 的有关问题,请进来看看,多谢

2012-01-22 
请教byref和byval 的问题,请进来看看,谢谢~SubAdd1(ByValnAsInteger)nn+100EndSubSubAdd2(ByRefmAsIntege

请教byref和byval 的问题,请进来看看,谢谢~
Sub   Add1(ByVal   n   As   Integer)
    n   =   n   +   100        
End   Sub

Sub   Add2(ByRef   m   As   Integer)
    m   =   m   +   100    
End   Sub

Private   Sub   Command1_Click()
Dim   a   As   Integer
    a   =   100
    Add1   (a)
    Text1.Text   =   a
     
    Add2   (a)
    Text2.Text   =   a
End   Sub
        这段程序执行结果应该是什么?网上说因为add1是值传递方法,所以a的值不变应该是100,add2用的引用传递,所以a的值要变成200,但是我执行的结果是都为100啊??是怎么回事?
        还有个问题想请教大家,为什么我用byval的方式向一个dll里面传参数的时候虽然不会报错,但是收到的参数却不对,改为用byref就对了.知道的大侠们说说啊,谢谢了!

[解决办法]
看来很多人对VB的语法不够了解啊
调用过程有2种方法
第一种:
call subname(var1,var2..)
第二种:
subname var1,var2..
假如只有1个 参数 并且你这样调用
subname (var1)
那么其中的var1就只不过是 "(var1) " 这个表达式中的1个变量而已所以这样只会按 "(var1) " 这个运算式的值来传递

修改如下:
Sub Add1(ByVal n As Integer)
n = n + 100
End Sub

Sub Add2(ByRef m As Integer)
m = m + 100
End Sub

Private Sub Command1_Click()
Dim a As Integer
a = 100
Add1 a
Text1.Text = a

Add2 a
Text2.Text = a
End Sub
[解决办法]
注意,vb调用过程是不需要加括号的

热点排行