Visual Basic には、式を評価するときに暗黙的に呼び出されることがある既定のプロパティがあります。ただし、このデフォルト プロパティの暗黙的な実行には矛盾があるようです。プロジェクトのレイアウトは次のようになります。
クラス1:
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 のテスト) を呼び出し、さらにそのデフォルト (class2 のテスト) を呼び出します。その結果、画面に「hello world」が表示されます。ただし、Debug.Print ステートメントはこれを行いません。デバッガーをたどると、(class1 の) 最初のデフォルトのみが呼び出されていることがわかります。
MsgBox/RTrim/LTrim などの組み込み関数の多くがこの動作を示すこと、および自己記述メソッドまたはクラス メソッドがこれを行わないことを確認しました。しかし、なぜこれが起こるのか分かりませんか?