VB.NET语言经过长时间的发展,很多用户都很了解VB.NET语言了,这里我发表一下个人理解,和大家讨论讨论。
VB.NET语言到底给我们带来了什么
微软公司推出的.NET 平台完全改变了VB的编程世界。.NET 战略迈出的首要一步就是发布了最新的软件开发包: Visual Studio.NET。开发团体对新一门编程语言C# 议论纷纷,但在这纷繁的变化之中人们却忽略了一个更为重要的新闻:VB发生了颠覆性的重大变化,这就是本文要探讨的宗旨,我们要引领读者领略一下VB.NET语言到底给我们带来了什么。
.NET世界内的每一种编程语言都必须和CLR(公共语言运行时:Common Language Runtime)打交道。你完全可以把这个新事物看成类似以往必须分派的VB运行时,当然,和老家伙相比,新玩意儿的规模更大,有些很酷的小东西也取消了。为了应付公共语言运行时, VB也必须随之有所改变,最重要的就是支持真正的面向对象编程。是的,你早就经常用VB处理各种对象了,某些VB开发人员甚至反复地在IDE内“实现”面向对象的VB程序,但是, VB6确实没有达到支持面向对象语言所应该达到的合理程度。
这可不是说VB开发人员就不知道面向对象的好。但是从某种意义上说,VB程序员因为VB所限多少悬在了面向对象和传统编程的半空中。结果呢,大多数VB程序员不过是典型的过程编程的实践者,对面向对象技术,比如COM可以说很少体验。这一事实令微软公司必须面临抉择:程序员的思想共享可是技术领域最有价值的无形资产啊!最激进的变革无非是让.NET把 VB扔到一边,让竞争对手如Java之类紧紧俘获程序员的心灵。好在茫然之际曙光初现:VB.NET来了。
语法和VB.NET语言变了样
学习编程语言的语法通常比学习围绕这一语言的技术行话要容易得多。超出编程语言的领域再看,这一事实对Web编程和面向对象等更为大型的软件工程也同样有效。在向面向对象技术进军途中最令人畏惧的任务就是理解一大堆陌生的面向对象术语,比如继承和重载等等。这些术语(比如类)往往具有不同的含义。
类
类是面向对象技术的核心概念。当然,目前的VB语言也支持类技术,但是,对VB.NET而言情况就完全不同了。对初学者来说,类开始和终止于某个代码块而非一个具体的文件。Public Class MyClass….End Class定义了一个类;这样只在一个文件里就可以定义多个类。其次,你再也不能对类进行“SET”操作;实际上,你干脆把关键词SET忘了吧!对属性的读取和赋值也取消了;它们都用一种更为智能的语法代替了。最重要的是,你必须把自己定义的类设想为物理实体的虚拟代表。CLR在对象分配时表现如此之好动作如此之快以至于创建对象的代价几乎为0。在VB编程中,开发人员创建一个很棒的对象往往勉为其难,这可是个很大的缺陷,原因就在于整个过程拖拉的可以,现在这些问题都被解决了。
重载
开发人员经常为满足特定需要而编写一块代码。随着开发工作的继续,这段代码往往会逐渐包括越来越多的功能。这种代码膨胀现象有时会让处理参数的数目多得惊人。到这个地步,你就必须增加相当可观的逻辑针对这些传递过来的参数做出执行决策,否则你就可能不得不创建更多的函数而它们要做的事情却几乎差不多。这种情况存在大量的问题,这些令人头痛的问题正好可以通过方法重载技术来
解决。
方法重载技术可以让程序员编写多个名字一样的方法,但这些方法的传递参数却不同。在方法被调用的时候,参数列表会被自动计算然后调用正确的方法。在这种情况下,你就不必编写任何判断逻辑来处理需要执行的程序代码了。
构造
当类被创建或者破坏时需要调用某些特殊的函数。你可能在VB6中已经熟悉这些函数了,在VB6中它们就是Class_Initialize和 Class_Terminate程序。在这些程序中增加逻辑也是可能的,而增加参数则绝不被允许。在创建类的时候有条件准备的资源还不可用。而在 VB.NET环境下,这些公共方法,也就是类构造器和破坏器,其处理能力被大大扩展了。最有用的变化就是可以在New方法中增加参数,而后者正是代替 Class_Initialize的方法。这一特性被称作“参数化构造器”,可以令类的内部资源分配效率更高。你可以用这种技术重载New方法而获得令人难以置信的灵活性。
【编辑推荐】