按值传递,按地址传递,字典不同意?

xiaoxiao2021-02-28  15

微信公众号原文

系统:Windows 7 软件:Excel 2010

使用场景or困惑

接着上一次的两种参数传递方式(按值传递,按地址传递),说说字典在传递过程中是否也遵循同样的标准字典:Set d = CreateObject("Scripting.Dictionary")

思考:实验设计

主过程中有1个字典,字典中有两个键(x ,y),并赋值为:1,2有两个子过程,子过程1:按值传递(ByVal),子过程2:按地址传递(ByRef)子过程1中分别给键x,y重新赋值3,4;子过程2中分别给键x,y重新赋值5,6分别输出每一次的值

结果如下:

代码

主过程main

Sub main() Set d = CreateObject("Scripting.Dictionary") d("x") = 1 d("y") = 2 Debug.Print ("转换之前") Debug.Print ("d(x) =" & d("x")) Debug.Print ("d(y) =" & d("y")) Call 按值传递(d) Debug.Print ("") Debug.Print ("按值传递") Debug.Print ("d(x) =" & d("x")) Debug.Print ("d(y) =" & d("y")) Call 按地址传递(d) Debug.Print ("") Debug.Print ("按地址传递") Debug.Print ("d(x) =" & d("x")) Debug.Print ("d(y) =" & d("y")) End Sub

代码截图

子过程1:按值传递

Sub 按值传递(ByVal c) c("x") = 3 c("y") = 4 End Sub

代码截图

子过程2:按地址传递

Sub 按地址传递(e) e("x") = 5 e("y") = 6 End Sub

代码截图

代码解读

两个子过程,最后实现的效果,都是“按地址传递”的效果,为啥?其实我不知道答案,这是不是涉及到对象的概念(参考Python)

更多精彩,请关注微信公众号 扫描二维码,关注本公众号

转载请注明原文地址: https://www.6miu.com/read-2050014.html

最新回复(0)