我的問題是關於在VB.NET中使用ByVal的概念。ByVal如何爲vb.net中的對象工作?
下面是代碼:
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的發生?或者有一些其他機制正在完成這項工作。
因此...如果我們將上面的代碼更改爲tObject1 = GetManipulatedDetails(tObject1),返回的值將是tObject1.sName =「Stack-Over-Flow」和tObject1.sLastName =「Flow-Over-Stack」 – Mych
@ Mych - 我們不需要將代碼改爲true,因爲只有一個'customdatatype'對象,它是一個引用類型,並且tObject1'一直持有對它的引用。 –
啊......明白......這會幫助我解決類似的問題。 – Mych