いまさらだがByValとByRefについて
ByVal ptr As Class1 → Class1* const ptr ByRef ptr As Class1 → Class1* ptr
かと思っていたが少し違うようだ。
ByValで渡してやってもメンバの中身が変更できない場合があったりする。
単純に
Public Function hoge() As String Dim e As New Class2 huga(e) Return e.foo.ToString End Function Private Sub huga(ByVal e As Class2) e.foo = 500 End Sub
とかすると関数hogeは期待通り"500"を返すのだけど、
メンバ構成が複雑だとNGなケースがあるようだ。
社内のクラスライブラリを利用していたときそんなことがあったのだが、気のせいかもしれない。