Visual Basic имеет свойства по умолчанию, которые иногда неявно вызываются при оценке выражения. Тем не менее, я, кажется, столкнулся с несоответствием с этим неявным выполнением свойств по умолчанию. Макет проекта выглядит так:
Class1:
property test -> class2 (default)
Class2:
property test -> string "hello world" (default)
Form1:
Dim x As New Class2
MsgBox x
Debug.Print x
Оператор MsgBox будет неявно вызывать значение по умолчанию для x (будучи тестируемым для класса 1), и, более того, он будет вызывать значение по умолчанию для этого (будучи тестируемым для класса 2), в результате чего на экране будет отображаться «привет мир». Однако оператор Debug.Print этого не делает, и, следуя отладчику, можно увидеть, что вызывается только первое значение по умолчанию (для class1).
Я проверил, что многие из встроенных функций, таких как MsgBox / RTrim / LTrim, демонстрируют такое поведение, и что любые написанные самостоятельно методы или методы класса не делают этого; но я не могу понять, почему это происходит?