局部变量优先于 属性?

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 的 属性。

我假设这与编译器一致。