五分钟了解VB.NET类构造
创始人
2024-06-09 18:00:47
0

在向大家详细介绍VB.NET类构造之前,首先让大家了解下VB.NET类是什么,然后全面介绍VB.NET类构造。

VB.NET类

我在以前的文章里曾经提到:VB.NET的出现使得VB6在类的概念及其操作上发生了巨大的变化。现在就让我们进到这些变化中来进行更深入的探讨。首先让我们看看类到底意味着什么。

不妨假设我把你带回到了学院,现在你走进一个教室,我要求你解释一下什么是类(class),你可能会这样回答:“一组学生形成一个班(class)。”呵呵,如果这样回答,你真是歪打正着了:没错,在这里,组就是最关键的词。用面向对象的编程思想来看,类就是存储数据同时给一组相关代码赋予协调功能的方式。类是面向对象编程的核心。

.NET赋予类的新面目
VB6和VB.NET在类的用法上有一个首要的显著差别,那就是后者不再采用Set关键词了。除此以外,在代码中定义类的方法也有所改变。这些变动不仅会直接影响你编写的代码而且更会改变你组织源文件的方式。

在VB6下,每个类都必须在单个源文件内增加和定义。而在VB.NET下就不是这样了:类以代码块的形式定义,如下所示:

  1. Public Class MyClass  
  2. '在这里编写类的成员代码!  
  3. End Class 

面对如此革命性的变化,有些人可能会急得嘴角发泡,而大多数人却可能并不在乎或不明白用代码块定义类到底用什么用。说真的,这全看你的口味。有些人喜欢而且希望一个文件中就只定义一个类,而另一些人则更愿意逻辑地组织他们的类。例如,如果你有一个product类,同时又有了一个对应的 products collection类,那么你完全可以把它们放在同一文件里以便更好地组织源文件。

VB.NET类构造和析构

当你的代码在创建一个类的实例时会调用该类的一个特殊方法:构造器(constructor)。同样的,在类被破坏的时候则会调用析构器(destructor)方法。在大多数面向对象语言里牵扯到类的构造和析构时通常都采用了以上两个一般术语而非具体编码时的成员名。我则喜欢采用术语“structors”来引用构造和析构。在VB6语言里,具体的“structors”是Class_Initialize和 Class_Terminate。在VB.NET下,Class_Initialize方法则被重命名为New,而Class_Terminate则成了 Finalize。

按照VB6对类构造器的实现限制,程序员不得给该方法添加参数。然而,VB.NET中则对构造器方法提供了参数支持。在VB.NET下,你现在可以随意地把参数添加到这个方法中来,甚至可以重载该方法。

参数化的构造器如何灵活地创建类呢?举个例子,假设有一个ADO Connection类。用VB6语言的话,你首先得把该类实例化,然后在代码中用ConnectionString属性定义连接。要用VB.NET的话,这个类的构造器就被参数化和重载了,这样,在程序员给对象实例化时就可以给它传递一个连接字符串,这样你就不必关心代码内如何设置以后的连接了。当然,你完全可以按老办法做:什么参数都不传递,以后在代码中设置连接字符串。

【编辑推荐】

  1. 详谈VB.NET编码规范经验
  2. 描述VB.NET工程转换成步骤
  3. 讲述C#与VB.NET间移植的技巧
  4. 分享个人总结VB.NET多线程
  5. 剖析VB.NET TextBox控件

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...