ByRef和ByVal

PK

ByRef:

    我们常说的传地址,也就是用一旦在使用过程中改变了引用的数值,那么原数值做相应的改变。可以说ByRef用的随波逐流。

ByVal:

    所谓的传值;无论在使用过程中如何操练所引用的数值,原数值就不会有任何变化。ByVal用的刚正不阿啊。

举例:

    例如A过程ByRef了一个值为10的a,若A过程在使用a的时候将a重新赋值为5,那么a的值就会变为5;而假若A过程ByVal了一个值为10的a,不管A过程在使用a的时候对a重新赋值多少次,a的值都会保持10不变。

代码

ByRef

<span style="font-family:KaiTi_GB2312;font-size:24px;"> Sub ByR(ByRef x As Integer)
        x = 1
    End Sub
    Private Sub btnByRef_Click(sender As Object, e As EventArgs) Handles btnByRef.Click
     
        Dim a As Integer = 5
        ByR(a)
        txtByRef.Text = a

    End Sub</span>


ByVal

<span style="font-family:KaiTi_GB2312;font-size:24px;">  Sub ByV(ByVal x As Integer)
        x = 1
    End Sub
    Private Sub btnByVal_Click(sender As Object, e As EventArgs) Handles btnByVal.Click


        Dim a As Integer = 5
        ByV(a)
        txtByVal.Text = a

    End Sub</span>

结果


小结

    通过结果可以看到,我们在将a=5传入参数传递方式为ByRef的过程中后将地址一并传入,从而导致自身的值被改为ByR中的1;
而在将a=5传入参数传递方式为ByVal的过程中后只是将值传入,并没有将自身的值改为ByV中的1。
    如果要想保护参数的安全性,建议使用ByVal;而若进行数据导入导出时建议ByRef。
感谢您的宝贵时间,祝您生活愉快。
——joker
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值