You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 20:45:38