プロが教える店舗&オフィスのセキュリティ対策術

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
************************************************************
上記のコードはあくまで想像です。
でも実際、このようなことはできるのでしょうか?
ご存知の方がいらっしゃいましたらご教授願います。

A 回答 (4件)

戻り値をObject型にすればできないことも無いような気もします。



でもわたしなら、型に応じて共通のDataGetメソッドを持ったクラスを作ります。
将来的に型が増えてもクラスを増やすだけで対応できるからです。
    • good
    • 0

オーバーロードにすればどうでしょうか。


同じ関数名で引数に応じて戻り値を変更する事が出来ます。

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
    • good
    • 0

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
です
    • good
    • 0

#1さんのおっしゃられる通り、xxxをobjectにすればよいと思います。



ジェネリックを利用するのも良いと思います。
http://www.microsoft.com/japan/msdn/thisweek/300 …

他の方へキャストすることもイメージに近いのではないでしょうか?
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.ph …

もしオーバーロードを使用するのであれば、引数の数を変えるなどして区別をつけておいたほうが良いでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!