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
相关产品推荐
相关产品推荐

