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

VBA中的Let Property在VB.NET中的等效实现方式是什么?

VBA带参数的Let Property转VB.NET的实现方式

VBA中带额外参数的Let Property(比如你示例里的Base(N%, vNewValue))在VB.NET中没有完全一对一的语法,但可以通过两种方式实现等价功能:

方式1:转换为Sub方法

这是最直接的替代方案,把原属性的逻辑封装成带参数的Sub:

Private Sub SetBase(N As Integer, vNewValue As String)
    Dim pos As Integer = InStr(vNewValue, "  ")
    If pos > 0 Then
        cond1(N) = Left(vNewValue, pos - 1)
        cond2(N) = Right(vNewValue, vNewValue.Length - pos - 1)
    Else
        cond1(N) = vNewValue
    End If
End Sub

调用时直接执行SetBase(1, "test value")即可。

方式2:使用带索引参数的WriteOnly属性

如果你想保留原VBA的赋值语法(比如Base(1) = "test value"),可以用VB.NET的带参数的WriteOnly属性,这和原VBA的Property Let逻辑最贴合:

Private WriteOnly Property Base(N As Integer) As String
    Set(value As String)
        Dim pos As Integer = InStr(value, "  ")
        If pos > 0 Then
            cond1(N) = Left(value, pos - 1)
            cond2(N) = Right(value, value.Length - pos - 1)
        Else
            cond1(N) = value
        End If
    End Set
End Property

这种方式的调用语法和原VBA完全一致,VB.NET会自动把Base(N) = 值的语句映射到属性的Set块中。

补充说明

  • VBA中Let和Set的区别(值类型/对象类型赋值)在VB.NET中已经被合并,所有赋值都通过属性的Set块处理。
  • VB.NET的属性支持定义索引参数(即属性名后加参数列表),这正好对应VBA中带额外参数的Property Let场景。

内容的提问来源于stack exchange,提问作者Alex Schmidt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:07:13