-
vb.net教程之对象的处理
对象的处理
VB.NET在声明、构造以及执行类上比VB6有很大的变化,同样在对象的处理上也有不小的改变。这些改变影响了我们实例化对象、引用和取消引用对象以及我们使用捆绑技术的方法。下面我们就开始详细说明吧。
对象声明和实例化
VB.NET没有使用CreateObject语句来创建对象。CreateObject是VB与COM密切相关的一个产物。因为VB.NET不再使用COM,所以从VB.NET开始就不在使用CreateObject。
New语句
VB.NET使用New语句来创建对象。我们可以使用New在代码的任何地方。下面的例子我们来创建一个变量并且在类的一个实例中创建一个对象的实例:
Dim obj As TheClass
obj = New TheClass()
我们可以简化上面的语句:
Dim obj As New TheClass()
VB6中以上的两段语句会存在一些事情,但是在VB.NET中上面的两段语句之间是没有什么区别的,只是第二段语句缩短了而已 。
下面我们要讲讲变量的作用域。如果你在一个块结构中声明一个变量,那个变量就只有在块结构中才有效。在许多情况下,我们想在方法的作用域中声明一个变量,或者想在在块结构(比如Try...End或者loop循环结构)中创建一个实例。在这样的情况下,用实例化来组合声明有点不妥。
上面的语句为我们定义了一个变量并实例化了一个类。这条语句可能在处理继承或者多个界面的时候会更有用。我们可以声明变量为其中一种类型并且基于要执行界面的类来实例化对象:
Dim obj As MyInterface = New TheClass()
我们可以同时利用更复杂的语句。假如我们有个需要对象引用的方法,我们可以这样来实例化对象:
DoSomething(New TheClass())
以上的语句是调用DoSomething方法并且传递TheClass的一个新的实例作为参数。这个新的对象就只有存在于这个方法的调用的事件内,即当方法完成之后,这个对象就自动被取消引用。
这里还得提醒一下,取消引用一个对象不是意味着马上终止这个对象。这一点我们在前面的教程中有作解释。对象只有在.NET的垃圾收集处理程序的时候才将它们从内存清除掉。
下面的例子可能更复杂。不是利用一个对象引用,我们的方法需要一个字符串。我们可以从一个方法提供一个字符串数值到我们的对象中来实例化对象并调用方法:
DoSomething(New TheClass().GetStringData())
很显然,我们需要仔细观察一下这条语句的可读性。语句的压缩往往较少了可读性,这点是我们应该注意到的。