私の質問は、vb.net での ByVal の動作の概念に関するものです。
コードは次のとおりです。
Private Sub ManipulateDetails()
Dim tObject1 as New customdatatype
tObject1.sName = "Stack"
tObject1.sLastName = "Over"
GetManipulateDetails(tObject1)
End Sub
Private Function GetManipulateDetails(ByVal tObject1 as customdatatype)
tObject1.sName = "Stack-Over-Flow"
tObject1.sLastName = "Flow-Over-Stack"
Return tObject1
End Function
上記のコード スニペットでは、GetManipulateDetails 関数で tObject1 を ByVal として送信しています。このサブルーチンで値が変更されると、返されたオブジェクトは、渡された実際のオブジェクトを操作します。つまり、メソッド ManipulateDetails でオブジェクトをクイックウォッチすると、操作された詳細を確認できます。また、サブルーチン関数でオブジェクトを返す場合、値は渡された元のオブジェクトに反映されます。
関数 GetManipulateDetails からオブジェクトを返さなくても値が変更されているため、ByRef が原因で発生しているのか混乱していますか?? または、この作業を行っている他のメカニズムがあります。