.net - 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
是否可以像此代码一样创建对对象的引用?
解决方案
您需要使用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 = 7
or Prog2.Value = 7
,结果是一样的:
Variable | Memory
---------------------------------------------------
Prog1, Prog2 --> | [Min:1 Max:10 Value:7 ]
| [Min:100 Max:1000 Value:500]
您可以了解有关值类型和引用类型的更多信息。
推荐阅读
- php - 在 laravel 中从传统方式获取参数
- php - Laravel 的 CORS 标头缺少错误
- mapbox - Mapbox - 无效的瓷砖顺序
- c++ - 我遇到了这个代码片段并且不明白。它递归地检查 C++ 字符串中是否存在大写字符
- css - 动画卡片内下拉菜单的 Z-index 问题
- ruby - `&method(:function)` 是什么意思?
- php - 如何在 WordPress 中显示翻译后的作者角色名称
- asynchronous - 如何创建一个流,其中项目基于流先前返回的项目?
- go - 使用 UNWIND 时如何访问 Neo4j 结果?
- asp.net - Azure AD 身份验证无休止循环,错误太多请求