- ベストアンサー
【VB2005】メソッドに渡したデータによって、データ型の違うデータを取得する
23歳男性です。 visual studio 2005で開発してます。 ふと思ったんですけど、メソッドに数値を渡して、その数値によってデータ型の違うデータを取得できたら便利かなーと思いました。 ************************************************************ 私が考えたコード ************************************************************ ■メソッド DataGet(1) ■メソッド側処理 public function DataGet(byval num as integer) as ××× select case num case 1:「日付型」データ case 2:「数値型」データ case 3:「文字型」データ end select return データ end function ************************************************************ 上記のコードはあくまで想像です。 でも実際、このようなことはできるのでしょうか? ご存知の方がいらっしゃいましたらご教授願います。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
オーバーロードにすればどうでしょうか。 同じ関数名で引数に応じて戻り値を変更する事が出来ます。 Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click Console.WriteLine(DataGet(10)) Console.WriteLine(DataGet("あ")) Console.WriteLine(DataGet(Now())) End Sub Function DataGet(ByVal value As Integer) As String Return value * 2 End Function Public Function DataGet(ByVal value As String) As String Return value & value End Function Public Function DataGet(ByVal value As Date) As Date Return value.AddDays(3) End Function
その他の回答 (3)
- AKARI0418
- ベストアンサー率67% (112/166)
#1さんのおっしゃられる通り、xxxをobjectにすればよいと思います。 ジェネリックを利用するのも良いと思います。 http://www.microsoft.com/japan/msdn/thisweek/300x10/phase3/generics/vb.aspx 他の方へキャストすることもイメージに近いのではないでしょうか? http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=47815&forum=7&7 もしオーバーロードを使用するのであれば、引数の数を変えるなどして区別をつけておいたほうが良いでしょう。
- chibita_papa
- ベストアンサー率60% (127/209)
No2 です。 失礼しました。 Function DataGet(ByVal value As Integer) As String Return value * 2 End Function ではなく Function DataGet(ByVal value As Integer) As Integer Return value * 2 End Function です
- isle
- ベストアンサー率51% (77/150)
戻り値をObject型にすればできないことも無いような気もします。 でもわたしなら、型に応じて共通のDataGetメソッドを持ったクラスを作ります。 将来的に型が増えてもクラスを増やすだけで対応できるからです。