こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VisualBasic2010 関数の呼び出し

VisualBasic2010を利用してシステム開発を行っているのですが、
特定の条件に従いFUNCTIONを呼び出したいと考えております。

呼び出すFUNCTIONが多数存在するため、FUNCTION名を変数で
保持しておき、呼出し時にその変数を利用して呼び出せないかと
思案しております。

 ★呼出し側
Dim wk as integer
  wk = TEST_A()
  wk = TEST_B()
 ※上記の「TEST_A()」「TEST_B()」を変数を利用して
  wk = HENSU()のように呼び出せないかと考えております。

Private Function TEST_A() As Integer
Return 0
End Function

Private Function TEST_B() As Integer
Return 1
End Function

分る方がいらっしゃいましたらご教授頂けますと幸いです。

投稿日時 - 2018-07-07 11:42:39

QNo.9516008

すぐに回答ほしいです

質問者が選んだベストアンサー

こちらが参考になると思います。

Calling a Property or Method Using a String Name (Visual Basic)文字列名によるプロパティまたはメソッドの呼び出し (Visual Basic)
https://docs.microsoft.com/ja-jp/dotnet/visual-basic/programming-guide/language-features/early-late-binding/calling-a-property-or-method-using-a-string-name

投稿日時 - 2018-07-08 00:23:51

ANo.4

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

オブジェクト指向言語の基本的な手法ですが、インターフェースでメソッドを定義して、そのインターフェースを継承したクラスを作り、それらのクラスにインスタンスを配列に入れれば可能です。

ただ、この関数の配列化って昔からあって、C言語では関数ポインタなんて方法で実装されてました。これって必要以上に読み辛いコードになってしまうのでデバッグやメンテナンス性が非常に悪くなり、開発規約で禁止されることもありました。

投稿日時 - 2018-07-07 18:31:14

ANo.2

delegateとかlambda式とかになるかと。

以下のurl等を参照してみてください。
https://code.msdn.microsoft.com/windowsdesktop/20-Delegate-ff228d6e
https://docs.microsoft.com/ja-jp/dotnet/visual-basic/programming-guide/language-features/procedures/lambda-expressions

投稿日時 - 2018-07-07 12:40:25

ANo.1

visual basicに限りませんが、そういう機能は無いと思います。私が知らないだけかもしれませんが。ただ、やりようはいくつかあります。
> 特定の条件に従い
とあるので、場合分けするのですよね。だったら、select case文で場合分けしているところでfunctionをコールすれば良いのでは。
もしくはfunctionに引数で渡し、その引数の値に応じた処理をさせるとか。個人的には後者の方が前者よりも好みです。

投稿日時 - 2018-07-07 12:29:59

あなたにオススメの質問