程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB.NET >> 用一個字符名稱調用一個屬性或者方法

用一個字符名稱調用一個屬性或者方法

編輯:VB.NET

在設計的大部分時候,用戶可以發現一個對象的屬性和方法,並且可以寫一些代碼來處理這些方法。然而在一些時候,不能提前知道一個對象的屬性和方法,或者只是想在運行程序的時候能具有指定屬性和運行不同方法的靈活性。
舉一個例子,一個客戶端的運行程序通過給一個COM組件一個操作來計算一個表達式。假想現在正在給服務器加一個需要新的操作描述的函數。不幸的是,這時必須重新編譯和發布客戶端軟件才能使用新的操作。為了避免這種情況,用戶可以使用CallByName函數來把新的操作當成一個字符給服務器加載這個函數,而不需要改變運用程序。
CallByName函數允許用戶在運行程序的時候使用一個字符來指定一個屬性或者方法,具體使用方法如下:
Result=CallByName(Object,ProcedureName,CallType,Arguments())
第一個參數Object表示用戶需要操作的對象,第二個參數ProcedureName指的是用戶要操作的方法、屬性或者過程名稱的字符表示,CallType是一個常數選項,當被操作的是一個方法時,值為VBMethod;當被操作的是設置屬性時,值為VbLet;當操作的是得到屬性時,值為VbGet;當被操作的是設置對象屬性的值時,值為VbSet,最後一項選項是可選的。它包括了一個變量數組,該數組包含了過程的所有參數。
假設有一個COM組件叫做MathServer,含有一些平方根運算的函數。程序有兩個TextBox控件:第一個控件用來輸入需要進行計算的表達式,第二個控年用來輸入需要進行的計算方法,就可以在進行計算按鈕的點擊事件中加入以下代碼:
Private Sub Command1_Click()
    Text1.Text=CallByName(MathServer,Text2.Text,VBMethod,Text1.Text)
End Sub
如果在第一個Text中輸入"64/4",在第二個Text中輸入"SquareRoot",則上面的代碼就會調用求平方根函數並且返回“4”在第一個Text中。但是如果在第一個Text中輸入了不合法的字符,或者在第二個Text中並沒有輸入一個方法,而中輸入了一個屬性,或者該方法還需要一個參數的話,則會產生運行錯誤。正如猜測的一樣,如果需要使用這種用字符名稱調用一個屬性或者方法的話,就必須把出錯處理做得非常好。
CallByName在有一些情況下非常有用,但是必須考慮它的一些缺點,比如使用CallByName調用一個過程會比後期綁定慢一些,但如果用戶要調用一個經常要重復的函數的話,例如一個內部循環,那麼使用CallByName將會表現得快一些。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved