Visual Basic 具有在计算表达式时有时会隐式调用的默认属性。但是,我似乎遇到了与默认属性的这种隐式执行的差异。项目布局如下:
第一类:
property test -> class2 (default)
类2:
property test -> string "hello world" (default)
表格1:
Dim x As New Class2
MsgBox x
Debug.Print x
MsgBox 语句将隐式调用 x 的默认值(在 class1 上进行测试),此外,它将调用 x 的默认值(在 class2 上进行测试),这会导致屏幕上显示“hello world”。然而 Debug.Print 语句并没有这样做,并且通过跟踪调试器,可以看到只有第一个默认值(在 class1 上)被调用。
我已经验证了许多内置函数(例如 MsgBox/RTrim/LTrim)都表现出这种行为,并且任何自写的方法或类方法都不会这样做;但我无法弄清楚为什么会发生这种情况?