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で返ってくるので少し悩んでこの基礎的なこを思い出しました・・・。

 

基礎って大事なぁーと思った今日この頃。