VB NET面向对象的实现(十六)


https://www.360docs.net/doc/0a1961343.html,面向对象的实现(十六)
编译:ZSC/太平洋网络学院


对象的处理

早的和晚的捆绑

VB的一个强大的功能是在处理对象的时候可以访问早的和晚的捆绑。你看完这句一定会觉得云里雾里的,好吧,下面就详细叙述一下早的和晚的捆绑吧。

所谓早的捆绑意思是说代码在直接处理对象时提前知道数据类型并且可以更有效的处理对象。早的捆绑允许IDE使用IntelliSense来提供开发效率,以及允许编译程序确保我们引用的方法存在并且提供正确的参数数值。

晚的捆绑的意思是代码动态地处理对象。这提供了更大的灵活性,因为代码没有考虑对象的类型,并且只要对象支持我们想要调用的方法,它就被处理。并且因为IDE或者编译程序不能识别对象的类型,而且没有IntelliSense和编译过程的语法检查,所以它将带来一些预想不到的灵活性。

https://www.360docs.net/doc/0a1961343.html,继承了这个传统,并且它在处理对象的时候提供了对早的和晚的捆绑的支持。

缺省状态下,所有的对象是早的捆绑。只要Option Strict 被设置On,IDE和编译器强迫这样作,On也是缺省的。但是,如果Option Strict 被设置Off,我们在整个代码中就使用晚的捆绑。

对象类型的使用

晚的捆绑发生在编译器不能判断对象的类型的时候。这个问题可以通过使用对象的数据类型类解决。一个数据类型对象的变量可以保留任何的数值,包括任何类型对象的引用。这样,如同下面的代码就可以在任何对象中运行以完成一个MyMethod方法,这个方法没有任何参数。

Option Strict Off

Module LateBind

Public Sub DoSomething(obj As Object)

obj.MyMethod()

End Sub

End Module

如果对象传递这个程序(没有一个无参数的MyMethod方法),那么就会出现一个错误。这里推荐,使用晚的捆绑的代码要总是提供错误俘获:

Option Strict Off

Module LateBind

Public Sub DoSomething(obj As Object)

Try

obj.MyMethod()

Catch

(这里可以进行一些适当的处理来给出调用这种方法的错误)

End Try

End Sub

End Module

虽然晚的捆绑比较灵活,但它容易导致错误并且比起早的捆绑更慢。为了产生晚的捆绑方法的调用,.NET程序必须动态地判断目标程序是否由一个方法来匹配我们调用的方法,并且它必须调用那个方法。这会比早的捆绑花更多的时间,因为早的捆绑能够提早知道方法的存在并且编译代码以使得调用变得很直接。


[上一页] [下一页]




相关文档
最新文档