如何在VB.NET中无需重写初始公式即可刷新变量初始值?
动态更新变量值的解决方案
问题根源
你之前的写法(比如Private a As Integer = b + c)是变量初始化赋值,这个操作只会在对象创建时执行一次。之后修改b/c或者keyName,变量a/path只会保留初始计算的结果,不会自动重新关联计算逻辑。
解决方案1:使用只读属性(推荐)
属性的Get块会在每次访问属性时执行,刚好满足你需要的"动态刷新"需求,用法和普通变量几乎一致。
简单示例(a = b + c)
' 存储b和c的私有变量,用于后续修改 Private _b As Integer = 0 Private _c As Integer = 0 ' 只读属性,每次访问都会重新计算最新的b+c值 Public ReadOnly Property A As Integer Get Return _b + _c End Get End Property
使用方式:
- 修改
b/c时直接给私有变量赋值:_b = 10、_c = 20 - 每次需要最新的
a值,直接访问A即可,比如Dim currentA As Integer = A,此时会返回30
注册表路径示例
' 存储键名的私有变量,用于后续修改 Private _keyName As String = "初始注册表键名" ' 只读属性,每次访问都会从当前_keyName读取注册表值 Public ReadOnly Property Path As String Get ' 第三个参数是默认值,可根据需求修改 Return My.Computer.Registry.GetValue(_keyName, "path", "") End Get End Property
使用方式:
- 修改键名时赋值给
_keyName:_keyName = "新的注册表键名" - 访问
Path即可获取最新的注册表路径值
解决方案2:使用方法
如果觉得属性不好理解,也可以写一个专门的方法来获取最新值:
简单示例
Private _b As Integer Private _c As Integer Private Function GetLatestA() As Integer Return _b + _c End Function
每次需要最新的a值时,调用GetLatestA()即可。
注册表路径示例
Private _keyName As String Private Function GetLatestPath() As String Return My.Computer.Registry.GetValue(_keyName, "path", "") End Function
修改_keyName后,调用GetLatestPath()获取新路径。
内容的提问来源于stack exchange,提问作者Zayd
相关产品推荐
相关产品推荐

