首页 > 解决方案 > vb.net 创建一个对象的引用

问题描述

我需要创建对对象的引用,其中 Prog2 是对 Prog1 的引用 这里我需要:

dim Prog1 as myclassprogressbar
dim Prog2 as myclassprogressbar

Prog1.initialize()
Prog1.max=10
Prog1.min=1
Prog1.value=5

Prog2.initialize()
Prog2.max=10000
Prog2.min=100
Prog2.value=500


Prog2=Prog1

Prog1.value=7


debug.print Prog2.value

7

是否可以像此代码一样创建对对象的引用?

标签: .netvb.net

解决方案


您需要使用New. 然后假设myclassprogressbar是一个类,因为类是引用类型,在你赋值之后Prog2 = Prog1,变量Prog2将指向同一个对象Prog1

因此,如果您将某些内容分配给Prog1.Value,那么由于Prog2指向同一个对象,那么Prog2.Value将具有与 相同的值Prog1.Value

定义 Prog1 和 Prog2 后,每个变量都指向内存中的不同对象:

Variable         | Memory
---------------------------------------------------
Prog1        --> | [Min:1     Max:10     Value:5  ]
Prog2        --> | [Min:100   Max:1000   Value:500]

设置后Prog2 = Prog1,它们都指向内存中的同一个对象,而您分配给的对象唯一发生的事情Prog2是,该对象仍在内存中,您只是丢失了对该对象的引用:

Variable         | Memory
---------------------------------------------------
Prog1, Prog2 --> | [Min:1     Max:10     Value:5  ]
                 | [Min:100   Max:1000   Value:500]

所以,如果你设置Prog1.Value = 7or Prog2.Value = 7,结果是一样的:

Variable         | Memory
---------------------------------------------------
Prog1, Prog2 --> | [Min:1     Max:10     Value:7  ]
                 | [Min:100   Max:1000   Value:500]

您可以了解有关值类型和引用类型的更多信息。


推荐阅读