选择显示字体大小

对vb6的后期绑定和前期绑定的一点看法

  1. 什么是后期绑定和前期绑定后期绑定

  msdn 6的定义如下:

  后期绑定:若将一个变量声明为 as object 或 as variant(包括 as form 或 as control 的变量),visual basic 在编译时就无法确定该变量将引用哪种类型的对象。因此,visual basic 必须使用后期绑定,在运行时确定对象的属性和方法能否使用该变量。

  若使用后期绑定,则每次调用属性或方法时,visual basic 都要将成员名传给该对象 idispatch 接口的 getidsofnames 方法。getidsofnames 返回该成员的派遣 id,或 dispid。visual basic 再将该 dispid 传给 idispatch 接口的 invoke 方法来调用该成员。

  对进程外部件而言,这意味着一次额外的跨进程方法调用,结果是调用开销翻番。

  前期绑定:如果在编译时 visual basic 能够知道属性或方法所属的对象,就可以预先查找该成员在类型库中的 dispid 或 vtable 地址。这样就无须在运行时调用 getidsofnames。

  当显式声明了变量的类时,例如 as widget,该变量就只能存放该类的对象的引用。visual basic 就可以为该变量调用的所有属性和方法使用前期绑定。

  建议在 visual basic 和应用程序中使用这种方法来声明对象变量。

  使用前期绑定还是后期绑定完全取决于声明变量的方式。对象的创建方式对此没有任何影响。

  2. 后期绑定的几个优势和好处

  第一,个人认为,由于vb6不支持实现继承,对于某些设计,可以使用将对象定义为variant变量,而获取某些设计和编码上的便利,而得到接口或抽象类的好处。例如:

  如定义2个类:

class1:

1option explicit
2
3public sub update()
4 msgbox "class1 updated"
5end sub

class2:

1option explicit
2
3public sub update()
4 msgbox "class2 updated"
5end sub


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons