asp中byval和byref的区别
作者:admin 日期:2011-01-20
标题是“asp中byval和byref的区别”,其实也不一定是asp,vb,vbs等也是同样存在这个问题。说到底这三者还是一家。说起vb,不得不好好的感动一下,当初引我入门的可就是vb呢。虽然当时什么都不知道,参考书,参考资料都看得稀里糊涂,却深深得吸引着我进入程序的世界。呵呵扯远了。回过来看看byval有什么区别。
记得有一份参考资料上说过类似下面这句话:byval是传值调用,而byref叫做传引用调用。当时根本就搞不清楚什么叫传值,什么叫传引用,只能根据其他的解释朦胧的理解。byval是传值调用嘛,就是在调用函数的时候建立了一个新的变量,并给他附上传过来的值。解释一下。比如有下面这样的程序。
function fuck(byval a)
下面具体的实现过程就不写了。然后我在另外一个地方调用了fuck(b),如果不深究的话,可以这么理解,就是在这个函数的括号中
function fuck(byval a)进行了(dim a : a=b)所以在函数fuck里面对a的操作跟b毫无关系了,因为压根就没有操作到b嘛。
下面说说byref。假设同样有一个函数,跟上面那个函数略有不同。
function fuck(byref a)或者function fuck(a)
其实这两个函数只是写法不一样,前者多了个byref。因为asp默认是采用byref的方式调用的,所以不写就等于写了byref。那么同样的,在另外一个地方调用了fuck(b)。那就相当于这样了function fuck(b),就是说括号里的这个东西就是b本身了,那也就是说在函数中所有用到a的地方都被b替换掉了,那函数中队a的操作自然也被替换成了对b操作,所以自然会对b产生影响了。
当然这只是对刚入门的童鞋的一个解释,因为我觉得这样可能能好理解一些。