VB6の話。
VB6はメソッドの引数につけるByVal,ByRefを省略するとByRefでした。
そこで、こんなコード。
(良いサンプルが思いつかなかった・・・)
Private Sub やってはいけない(hoge As String,RecordCount As Integer) RecordCount = なんらかを実行して件数を返すらしい(hoge) End Sub
引数として渡されたQueryを実行し、
RecordCountに実行結果を返しているらしいが、
やるなら、
Private Sub やってはいけない(ByVal hoge As String,ByRef RecordCount As Integer) RecordCount = なんらかを実行して件数を返すらしい(hoge) End Sub
と書いておかないと、
Queryは値渡しで使われるだけ
RecordCountは参照渡しで、やってはいけないサブプロシージャ内でセットされる。
という事が読み取れない。
実際は、参照渡しは、それが回避不可能な時のみ利用するに限るので、
下記のように引数で値を返さないように修正する。
Private Function やってはいけない(ByVal hoge As String) As Integer Dim recordCount As Integer recordCount = なんらかを実行して件数を返すらしい(hoge) やってはいけない = recordCount End Function
値渡し、参照渡しの宣言を省略しないでね。
参照渡しは回避できるなら回避しようね。
ということ。