局部变量优先于 属性?
Precedence of local variable over Property?
我正在研究一些 VB6,它在 class 定义中有一些代码可以归结为:-
Private intMyValue as Integer
Public Property Get MyValue as Integer
MyValue = intMyValue
End Property
Public Sub DoFoo (ByVal MyValue As Integer)
Dim bar As Integer
bar = MyValue
End Sub
问题是:在对bar
的赋值中,使用的是属性还是参数?
通过逐步执行代码并在调试环境中为 intMyValue 分配一个已知值,我确定了参数而不是 属性 是所使用的参数。
不过,我看不出有任何方法可以从第一原理中推断出这一点。或者最接近的 VB6 无论如何都达到了第一原则。
一种检查方法是查看 IDE 认为将使用的内容。
这是一个例子:
Property Get test() As Integer
test = 1
End Property
Private Sub test2(test As Integer)
Debug.Print test 'Place cursor here
End Sub
如果您将光标放在指示行中的 test
上并按 Shift+f2(或右-单击 select Definition) 它会突出显示 test As Integer
(参数)中的 test
。
作为仔细检查,如果您将参数重命名为其他名称并再次执行此操作,则会突出显示名为 test
的 属性。
我假设这与编译器一致。
我正在研究一些 VB6,它在 class 定义中有一些代码可以归结为:-
Private intMyValue as Integer
Public Property Get MyValue as Integer
MyValue = intMyValue
End Property
Public Sub DoFoo (ByVal MyValue As Integer)
Dim bar As Integer
bar = MyValue
End Sub
问题是:在对bar
的赋值中,使用的是属性还是参数?
通过逐步执行代码并在调试环境中为 intMyValue 分配一个已知值,我确定了参数而不是 属性 是所使用的参数。
不过,我看不出有任何方法可以从第一原理中推断出这一点。或者最接近的 VB6 无论如何都达到了第一原则。
一种检查方法是查看 IDE 认为将使用的内容。
这是一个例子:
Property Get test() As Integer
test = 1
End Property
Private Sub test2(test As Integer)
Debug.Print test 'Place cursor here
End Sub
如果您将光标放在指示行中的 test
上并按 Shift+f2(或右-单击 select Definition) 它会突出显示 test As Integer
(参数)中的 test
。
作为仔细检查,如果您将参数重命名为其他名称并再次执行此操作,则会突出显示名为 test
的 属性。
我假设这与编译器一致。