人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VB.NET

メインのメソッド(以降、メイン)から、他のメソッド(以降、サブ)をコールして、
DBから項目の情報を取得したいです。

そこで質問なのですが、
情報の受け渡しはどのようにするのが適当でしょうか?

取得したい情報は次のような感じです。
・情報が取得できたかどうか(仮にTrue/Falseで取得するとします。)
・項目の数はやや多い。(仮にString型5個ということにします)
・サブ呼び出し時にセットする引数は、とりあえず無しということにします。

※サブからの取得の方法を知りたいです。
※引数(ByRef)での受け渡しだと、多すぎてやですよね?戻り値での受け渡しでしょうか?
※「私はこのようにしている」「こうするのが定石だ」というのが知りたいです。

●質問者: wwworz
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:String VB.NET メイン メソッド 引数
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● bankband
●60ポイント ベストアンサー

私のこの質問に興味があるので,回答したいと思います。

一つの方法として構造体を利用してはどうでしょうか?

・サブで取得した情報を戻り値で構造体として返す

・構造体が存在する場合は情報取得成功

・構造体が存在しない(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

◎質問者からの返答

丁寧な回答ありがとうございます。

クラスを採用しても同様に実現できるかと思いますが、あえて構造体を採用した理由はなんでしょうか?(回答枠を増やしました)

できまたら教えて頂けますでしょうか?


2 ● bankband
●40ポイント

あえて構造体を利用した理由ですが,

この質問の内容だったら

構造体の方がメモリを消費せずに動作がはやいと思いました。

取得したいデータ量が多かったり、汎用的にコーディングする場合は

Classにするかもしれません。

構造体ではなく単純に配列を戻り値にしてもよいと思いますが,

配列だと他人がメンテナンスする場合を考えてのコメントが増えたり,

現在は仮にString型5つのデータですが,複数の型のデータを扱う場合に

めんどくさいんで一つの方法として構造体をお勧めしました。

http://www12.plala.or.jp/dokugaku/lecture/6/4.html

◎質問者からの返答

根拠といい、とても満足のいく回答です。

とても有難いです。

ありがとうございました。


もう少し回答を募集してみます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ