孙利娟
(开封教育学院,河南 开封 475004)
Visual Basic 6.0(简称VB6.0)和Visual Basic.NET(简称VB.NET)都是美国微软公司推出的编程工具, 适合在Windows 环境下开发各类应用程序。它们的前身是QBASIC,语言基础是BASIC (Biginners All-Purpose Symbolic Instruction Code, 即初学者通用符号指令代码)。 BASIC 是20 世纪60 年代美国的Dart Mouth 学院的两位教授共同设计的计算机程序设计语言,最初运行在DOS 环境下,是当时最流行的高级语言之一。 微软公司于1991 年发布VB1.0, 用于轻松开发应用最广泛的窗体应用程序,极大地推动了Windows 应用程序的开发。 此后版本不断升级,至1998 年8 月推出VB6.0。Visual Basic.NET 是微软公司在2002 年推出的一种开发基于.NET 平台的Microsoft Visual Studio .NET 套件中主要组成部分之一,是微软公司极力推荐的一种开发.NET 平台应用程序的开发语言,也是目前世界上最为流行的编程工具之一[1]。
VB6.0 是一种基于对象的可视化开发工具,是专门为Microsoft 的32 位操作系统设计的,可用于开发通信、数据库、多媒体以及普通的Windows 应用程序。 由于它秉承了VB 语言简单易学易用、功能强大的一贯特性,更由于VB6.0 新增在数据库访问、控件以及支持Internet 方面的设计实现功能,使之成为广大程序爱好者和专业开发人员首选的编程工具。
NB.NET 是在VB6.0 的基础上发展起来的,其语法与VB6.0相似,但VB.NET 并不是VB6.0 的简单升级,而是增加了更多特性,演化为完全面向对象(就像C++)的编程语言,具有完全面向对象的特性,如继承、封装、重载、多态等。VB.NET支持基于网络应用的开发, 适应了电子商务时代的发展要求,除满足一般编程和客户/服务器应用开发的需要外,更为精彩的是,它还可以像创建普通表单一样创建用户自己的Web 动态页面。 VB.NET 的界面和编程风格都统一在Visual Stutio.NET 下,一个.NET项目支持多种语言的结合,用户可以根据开发的实际需求,自由选择c#、Visual Basic .NET、Visual C++.NET 语言。 这样既可以发挥各种语言各自特有的优势,又可以节省企业对员工进行开发语言培训的费用。 VB6.0 中的两个薄弱环节——多线程和异常处理,在VB.NET 中得到了较好处理,开发多线程应用和使用C++/C# 别无二致, 结构化异常处理也得到支持。
两个软件的集成开发环境有较大变化。 (1)VB6.0 默认只显示一个工具箱, 不分类型, 而VB.NET 工具箱将工具分成了多种类型,每一种类型以标签形式显示,包括数据类型、组件类型和Windows窗体类型,可隐藏或完全展开,工具数量大大增加。(2)VB6.0 和VC6.0 的开发环境是各自独立的,而Visual Studio .NET 把VB.NET、VC.NET、C#.NET、VJ#.NET 统一到一个集成开发环境中。在该环境下,不同语言之间的数据和代码交换也更方便,极大地简化了应用程序开发步骤,提高了编程效率。 另外,在先前的版本中,公用类界面对于用户总是隐藏的,在Visual Basic.NET 中, 公用类可以在代码窗口中浏览和编辑。
.NET 平台为所有支持语言提供了公共类型系统,这就意味着所有语言都必须支持公共语言运行环境所强制的相同的数据类型。 这样就消除了不同语言之间数据类型的不兼容性。 例如,在一个32 位的Windows 平台上,在C++这类语言中,Integer 数据类型占据4 个字节,而在VB6.0 中,则占据2 个字节。 VB.NET 中与数据类型有关的变化为:(1)在.NET 下,VB.NET 中的Integer 数据类型也是4 个字节。 (2)VB.NET 没有Currency 数据类型,作为代替,它提供了Decimal。 (3)VB.NET 引入了一种新的数据类型,叫做Char。Char 数据类型占据2 个字节,可以存储Unicode 字符。(4)VB.NET 没有Variant 数据类型。 为了得到与Variant 类型相同的结果,可以使用Object 数据类型。 因为在.NET 中的一切(包括原始数据类型),都是一个对象,一个Object 类型的变量,它可以指向任何数据类型。 (5)在VB.NET 中没有固定长度字符串的概念。
在VB6.0 中,我们使用Type 关键字来声明用户自定义结构。 VB.NET 引入了与此目的相同的结构关键字Structure,语法的其他部分是相同的。
在VB6.0 中不能同时用一个类型名声明多个变量和初始化变量[2],而VB.NET 则支持这个特性。如在一个简单的VB6.0 例子“Dim x,y As Integer”中,VB6.0 将x看成Variant,把y 看成Integer。 VB.NET 改进了这个解释,它将x 和y 都创建成Integer。另外,VB.NET 还允许在声明语句中为变量赋初始值[3],如:Dim str1 As String=“hello”。
VB.NET 还引入了Read-Only(只读)变量。 只读变量不像常数,声明它的时候不用初始化,但是一旦你给它赋值,就不能再修改。
使用VB6.0 时,用户可以通过编程来自由定义数组的上限和下限。 而在VB.NET 中,数组的下限总是0,若定义数组为:Dim a (50) As String,实际创建的元素是51 个,其中0 是下限,50 是上限。
在VB6.0 中,出于默认属性的原因,必须使用Set 声明为变量分配一个对象例示。 也就是说,要给对象本身指定一个变量(与对象的默认值属性值相反),就必须要使用Set 关键字。 但是在VB.NET 中,是不允许默认属性的(除非是参数化了的属性),因此就不需要使用Set 关键字。 同样,Let 关键字也从VB.NET 的语法中去掉了。
VB.NET 最终结合了结构化错误处理。 关键字Try、Catch 和Finally 使得错误处理变得简单,也使VB.NET 与C++或C# 这些语言可以并列起来。 Try… Catch 的模式允许开发人员将可能导致例外的代码放置在一个Try 模块中。 如果那个代码确实造成了一个例外(与造成错误同义),就执行Catch 模块中的代码[4]。
静态方法指的是那些不需要开发人员创建类的例示就能调用的方法。 例如有一个名为L 的类,其中有一个非静态方法NonStatic()和一个静态方法Static(),就可以通过“L.Static()”调用静态方法。 但是,非静态方法则需要创建类的一个例示,如:
Dim ObjL as NewL()
ObjL.NonStatic()
VB.NET 允许在类中创建静态方法。 创建时,只需要给方法定义、加上前缀Shared 关键字即可。
在默认状态下,VB6.0 中所有的程序参数都是通过引用方式(ByRef)来传递的,而VB.NET 是用值方式(ByVal)来传递的。 不管程序和函数是否接收参数,当调用它们的时候都需要圆括号。 VB6.0 中,函数返回值使用语法为:FunctionName=return_value。在VB.NET 中, 可 以 使 用Return 关 键 字, 以return_value 方式来表示返回值,也可以继续使用旧的语法。
在VB6.0中,我们使用了Property Get 和Prop erty Set/Let 在类中创建属性。 它们分别出现在单独的程序中[1],如:
Public Property Get PropertyName () as DataType
……
End Property
Public Property Let PropertyName (value as DataType)
……
End Property
在VB.NET 中,Property Get 和Property Let/Set这两个语句被合并成一个Property 语句,而不再是两个单独的语句[1]。 另外,在Property 语句的Set 部分中,变量Value 指的是用户给指定属性赋值时输入的那个值。
Public [ReadOnly|WriteOnly] Property Property Name as DataType
Get
Return m_var
End Get
Set
m_var = Value
End Set
End Property
除了原有的Private 和Public,VB.NET 引入了几个新的关键字。 全部访问域关键字如表1 所示。
表1 VB.NET 全部访问域关键字列表Table 1 All access domain keywords list of VB.NET
另外,VB.NET 引入了命名空间 (namespace)的概念,每个类都归属于某个namespace。 一个name space 是类和组件的逻辑组合,其目的在于将.NET class 按类别定义。
以上分析是作者根据应用VB 6.0 和VB.NET的经验作的一个小结。 通过这些比较,两者之间的异同可见一斑。 随着科学技术的快速发展,也将会有一些功能更强大、 应用更方便的编程语言出现(如VB2005、VB2008 等), 这将需要我们不断的学习和总结。
[1] 朱小平,曾文权,段班祥. Visual Basic.NET 程序设计[M].北京:清华大学出版社,2007:1-5,62-63,104-105.
[2] 李光明.中文Visual Basic 6.0 程序设计教程[M]. 北京:冶金工业出版社,2002:22.
[3] 黄玉春. Visual Basic 程序设计与实训教程[M]. 北京:清华大学出版社,2006:25-26.
[4] 刘怀亮. Visual Basic.NET 程序设计[M]. 北京:冶金工业出版社,2007:20.