VB6的后期綁定和前期綁定
1. 什么是后期綁定和前期綁定后期綁定
MSDN 6的定義如下:
后期綁定:若將一個(gè)變量聲明為 As Object 或 As Variant(包括 As Form 或 As Control 的變量),Visual Basic 在編譯時(shí)就無(wú)法確定該變量將引用哪種類型的對(duì)象。因此,Visual Basic 必須使用后期綁定,在運(yùn)行時(shí)確定對(duì)象的屬性和方法能否使用該變量。
若使用后期綁定,則每次調(diào)用屬性或方法時(shí),Visual Basic 都要將成員名傳給該對(duì)象 IDispatch 接口的 GetIDsOfNames 方法。GetIDsOfNames 返回該成員的派遣 ID,或 DispID。Visual Basic 再將該 DispID 傳給 IDispatch 接口的 Invoke 方法來(lái)調(diào)用該成員。
對(duì)進(jìn)程外部件而言,這意味著一次額外的跨進(jìn)程方法調(diào)用,結(jié)果是調(diào)用開銷翻番。
前期綁定:如果在編譯時(shí) Visual Basic 能夠知道屬性或方法所屬的對(duì)象,就可以預(yù)先查找該成員在類型庫(kù)中的 DispID 或 vtable 地址。這樣就無(wú)須在運(yùn)行時(shí)調(diào)用 GetIDsOfNames。
當(dāng)顯式聲明了變量的類時(shí),例如 As Widget,該變量就只能存放該類的對(duì)象的引用。Visual Basic 就可以為該變量調(diào)用的所有屬性和方法使用前期綁定。
建議在 Visual Basic 和應(yīng)用程序中使用這種方法來(lái)聲明對(duì)象變量。
使用前期綁定還是后期綁定完全取決于聲明變量的方式。對(duì)象的創(chuàng)建方式對(duì)此沒(méi)有任何影響。
2. 后期綁定的幾個(gè)優(yōu)勢(shì)和好處
第一,個(gè)人認(rèn)為,由于VB6不支持實(shí)現(xiàn)繼承,對(duì)于某些設(shè)計(jì),可以使用將對(duì)象定義為Variant變量,而獲取某些設(shè)計(jì)和編碼上的便利,而得到接口或抽象類的好處。例如:
如定義2個(gè)類:
Class1:
1Option Explicit
2
3Public Sub Update()
4 MsgBox "Class1 Updated"
5End Sub
Class2:
1Option Explicit
相關(guān)推薦:2010年9月計(jì)算機(jī)等級(jí)考試成績(jī)查詢時(shí)間匯總
2011計(jì)算機(jī)等級(jí)考試二級(jí)VB考點(diǎn)及習(xí)題匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |