VB中,传值(ByVal)和传地址(ByRef)的选择问题
一般情况下,如果你传入的参数在执行完SUB或FUNCTION后还想回收,就用传址,如果不想要了,要用传值。需要注意的是传值在理论上要比传地址速度慢。
我在百度搜索中,发现有人这么讲,他的说法正确吗?
传值不是做了变量的副本吗?不是要分配内存,速度会快吗?
[解决办法]
ByRef:传递引用,也就是把变量的地址传给过程或函数,操作时直接对该变量操作。
ByVal:传值,创建一个变量的副本(存放在栈区),用完即销毁,不会影响到变量本身。
[解决办法]
无论传值还是传址,都要在栈中分配一个内存,传值,在该内存中保存变量值,传址,在该内存中保存变量的地址。
速度根据数据类型不同而不同,传址都是4B(字节),传值
整形:传值2B
Long:4B
single:4B
double:8B
Date:8B
.......
结构体(Type定义类型)、对象只能传址
[解决办法]
传递引用不需要在栈区分配内存的,它取决于你的变量所在区域,如果是全局变量,那么它肯定就不会是在栈区。
[解决办法]
一般不会因为速度问题来考虑传值还是传址,都是根据情况用
[解决办法]
按需求编写代码。
需要改变传入的参数,并返回这个参数,那就传递引用。
不改变传入的参数,那就传值。
[解决办法]
不是速度问题,而是需求问题,如数组必须传地址。
[解决办法]