VB.NET で次のコードを記述しました。
Dim obj As Object
obj = "00"
Test(obj)
MsgBox(obj)
Private Sub Test(ByRef num As Integer)
End Sub
Private Sub Test(ByVal num As Integer)
End Sub
メソッド「Test」で値「00」が「ByRef」に渡されると、0 に変換されます。ただし、値「00」が「ByVal」に渡されると、「00」と同じ値が保持されます。署名のみに応じて、渡された値がどのように変換されていますか?
VB6 では、デフォルトの受け渡しタイプは "ByRef" ですが、同じコードは同じ値 ("00") を保持します。
VB6 と VB.NET におけるこの矛盾した動作の背後にある理由を説明できる人はいますか?