2010-09-09 70 views
3

我在VB中选择如何调用一个函数动态

Dim ver =101 
Select Case ver 
     Case 101 
      upd101() 
     Case 102 
      upd102() 
     Case 103 
      upd103() 
    End Select 

我怎样才能让这个选择更好的通过这种形式调用函数更动态: 前缀为“UPD”,后跟一个版本整数..?

谢谢! Adrian

回答

3

它可能,但它不干净,或更快。

Dim t As Type = base.GetType() 

t.GetMethod("upd" + theInt) 
+0

这需要VB.NET,所以它可能不适合他们。 – ChaosPandion 2010-09-09 18:13:16

+0

什么是obj? Dim obj As New Object – Adrian 2010-09-09 18:29:35

+0

这有帮助吗?是所有方法都在其中定义的类的类型。 – Nix 2010-09-09 18:39:57

5

难道你不能只调用upd(param)?

我的意思是,而不是创建许多功能,创建一个和使用变量。 ;]

+3

现在来吧,这将是愚蠢的。 – ChaosPandion 2010-09-09 18:09:37

+0

我不明白你的意思,你能再多说一点吗? – 2010-09-09 18:11:13

+0

对不起,如果英语不是你的第一语言,你可能不会读到讽刺。 – ChaosPandion 2010-09-09 18:12:11

4
Dim ver as Integer 
dim procToCall as String 

ver = 101 
procToCall = "upd" & ver 

CallByName myclassInstace, procToCall, vbMethod 

编辑:这里myClassInstance是你创建的类的实例。
即让我们假设你有一个名为Person的类,它有一个名为ToString的方法。
代码看起来像

dim somePerson as new Person 
CallByName somePerson, "ToString", vbMethod 

然而,应避免使用这种编程风格。
您有多少种这种方法可以调用此表单中的方法?

+0

tnx,所以我有功能upd101()... upd150() – Adrian 2010-09-09 18:31:50

+0

和我什么替代选择器,以更轻一些...像upd {101}()..?这是可能的吗? – Adrian 2010-09-09 18:32:37

+0

对不起:我的意思是upd {ver}()...其中ver是101到150之间的数字。 – Adrian 2010-09-09 18:33:24