VB.Netのメソッドの戻り値、参照渡しの結果について、2点質問がございます。
理解不足なのでご教授お願いできませんでしょうか。
①
DataSetは参照型で、Returnした時点で参照型の代入によって別メモリに変数「dsResult」と同じ値が作成され、
メソッドAが終了した際は、変数「dsResult」のメモリは解放されるが、ReturnしたDetaSetは残る(Disposeの影響なし)、
という認識であっていますでしょうか。
(そもそも変数「dsResult」のDisposeが大きな意味がない、というご指摘も受けそうですが。)
②
引数「dsTest」はNothingの場合はメソッドA内で生成して処理をしますが、
レビュー指摘で『(参照渡し)dsTestはメソッドA内で生成されるとメソッドAが持つメモリになるので遷移元で生成』
、と指摘を受けました。
引数「dsTest」は遷移元とメソッドA内では同じメモリを参照しているので、生成処理が遷移元でもメソッドAでも
遷移元の変数が生成される、という認識ですが間違っていますでしょうか。
Sub メイン()
Dim dsTest As DataSet = Nothing
'
'処理
'
Dim dsRet As DataSet = メソッドA(dsTest)
End Sub
Shared Function メソッドA(ByRef dsTest As DataSet) As DataSet
Try
Dim dsResult As New DataSet
If dsTest Is Nothing Then
dsTest = New DataSet
'処理
End If
'SQLによるデータ取得結果をdsResultにセット
Return dsResult
Finally
If dsResult IsNot Nothing Then
dsResult.Dispose()
End If
End Try
End Sub
以下、「メソッドの戻り値について」を参考に考えてみたのですが、
少し理解に自信がないのでよろしくお願いします。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=32024&forum=7

回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/27 12:00
退会済みユーザー
2016/06/27 12:58