メインのメソッド(以降、メイン)から、他のメソッド(以降、サブ)をコールして、
DBから項目の情報を取得したいです。
そこで質問なのですが、
情報の受け渡しはどのようにするのが適当でしょうか?
取得したい情報は次のような感じです。
・情報が取得できたかどうか(仮にTrue/Falseで取得するとします。)
・項目の数はやや多い。(仮にString型5個ということにします)
・サブ呼び出し時にセットする引数は、とりあえず無しということにします。
※サブからの取得の方法を知りたいです。
※引数(ByRef)での受け渡しだと、多すぎてやですよね?戻り値での受け渡しでしょうか?
※「私はこのようにしている」「こうするのが定石だ」というのが知りたいです。
私のこの質問に興味があるので,回答したいと思います。
一つの方法として構造体を利用してはどうでしょうか?
・サブで取得した情報を戻り値で構造体として返す
・構造体が存在する場合は情報取得成功
・構造体が存在しない(Nothing)場合は情報取得失敗
以下はサンプルソースです。
'=====================================
' 構造体定義
'=====================================
Private Structure Struct
Public A As String
Public B As String
Public C As String
Public D As String
Public E As String
End Structure
'=====================================
' メイン
'=====================================
Public Sub main()
'構造体にデータを取得
Dim st As Struct
st = getDBData()
'データ存在チェック
If IsNothing(st) Then
'データが取得できなかった場合
End If
End Sub
'=====================================
' DB取得用
'=====================================
Private Function getDBData() As Struct
'戻り値用の構造体をインスタンス
Dim data As New Struct
'データが取得できた場合の戻り値
data.A = "000"
data.B = "001"
data.C = "002"
data.D = "003"
data.E = "004"
Return data
'データが取得できなかった場合の戻り値
Return Nothing
End Function
私のこの質問に興味があるので,回答したいと思います。
一つの方法として構造体を利用してはどうでしょうか?
・サブで取得した情報を戻り値で構造体として返す
・構造体が存在する場合は情報取得成功
・構造体が存在しない(Nothing)場合は情報取得失敗
以下はサンプルソースです。
'=====================================
' 構造体定義
'=====================================
Private Structure Struct
Public A As String
Public B As String
Public C As String
Public D As String
Public E As String
End Structure
'=====================================
' メイン
'=====================================
Public Sub main()
'構造体にデータを取得
Dim st As Struct
st = getDBData()
'データ存在チェック
If IsNothing(st) Then
'データが取得できなかった場合
End If
End Sub
'=====================================
' DB取得用
'=====================================
Private Function getDBData() As Struct
'戻り値用の構造体をインスタンス
Dim data As New Struct
'データが取得できた場合の戻り値
data.A = "000"
data.B = "001"
data.C = "002"
data.D = "003"
data.E = "004"
Return data
'データが取得できなかった場合の戻り値
Return Nothing
End Function
丁寧な回答ありがとうございます。
クラスを採用しても同様に実現できるかと思いますが、あえて構造体を採用した理由はなんでしょうか?(回答枠を増やしました)
できまたら教えて頂けますでしょうか?
あえて構造体を利用した理由ですが,
この質問の内容だったら
構造体の方がメモリを消費せずに動作がはやいと思いました。
取得したいデータ量が多かったり、汎用的にコーディングする場合は
Classにするかもしれません。
構造体ではなく単純に配列を戻り値にしてもよいと思いますが,
配列だと他人がメンテナンスする場合を考えてのコメントが増えたり,
現在は仮にString型5つのデータですが,複数の型のデータを扱う場合に
めんどくさいんで一つの方法として構造体をお勧めしました。
根拠といい、とても満足のいく回答です。
とても有難いです。
ありがとうございました。
もう少し回答を募集してみます。
丁寧な回答ありがとうございます。
クラスを採用しても同様に実現できるかと思いますが、あえて構造体を採用した理由はなんでしょうか?(回答枠を増やしました)
できまたら教えて頂けますでしょうか?