2010-09-09 77 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