ByVal・ByRefの基本的なこと
ByVal (値渡し)
・値型の場合は当然元の値に影響しない。
・参照型の場合は、アドレスを渡しているだけなので値は変更する。
但し、インスタンスの変更は影響しない。
ByRef (参照渡し)
・値型の場合も元の値が変更される。
・参照型の場合は、値についてはByValと同じ動きをする。
インスタンスの再作成も影響する。
dim dcTest As Dictionary(Of String,String)
Dim intRet As Integer = Test(dcTest)
Public Function Test(ByVal dcTest As Dictionary(Of String,String)) As Integer
dcTest = New Dictionary(Of String,String)
dcTest.Add(Key1,Value1)
dcTest.Add(Key2,Value2)
Return 0
End Function
というPGを書いて、dcTest が常にNothingで返ってくるので少し悩んでこの基礎的なこを思い出しました・・・。
基礎って大事なぁーと思った今日この頃。