从VB6到VB.NET的变化综述
点击次数:47 次 发布日期:2008-11-06 08:07:04 作者:源代码网
|
当创建ASP.NET页面时,需要使用一种与兼容 .NET的编程语言,如C#、VB.NET或JScript.NET。但是从VB6/VBScript 到VB.NET有许多重要的变化,这正是本文所涉及的内容。 另外,如果想获得更多有关的信息,我强烈推荐你阅读Microsoft的文章:为Visual Basic 6.0应用程序升级到Visual Basic.NET做好准备。 引言 随着Microsoft .NET平台的发布,Visual Basic开始成为一种完全面向对象的语言,简称为VB.NET。虽然有了一些根本性的变化,开发者从VB6到VB.NET的学习热情依然相当高,即使对于有经验的编程人员也是如此。本文中,我将列出Visual Basic语言中的变化,并在适当的地方举例说明。这里所列出的可能不完全,但是已经包括了大部分的功能。如果你是一个想要转到VB.NET上去的 VB程序员,这篇文章就一定要读一读。 ASP.NET Beta 1版本可以从http://www.asp.net/免费下载。本文中所讨论的一些变化是属于 Beta 2版本的,这些 Beta 2中的新内容在ASP.NET的Beta 1 版本中是无效的,文中都作了注明。 数据类型的改变 .NET平台为所有支持语言提供了公共类型系统,这就意味着所有语言都必须支持支持公共语言运行时间环境所强制的相同的数据类型,如此就消除了不同语言之间数据类型的不兼容性。例如,在一个32位的Windows平台上,在C 这类语言中,integer数据类型占据4个字节,而在 VB 中则占据2个字节。以下是VB.NET中与数据类型有关的变化: 在 .NET下,VB.NET 中的Integer数据类型也是4个字节。 VB.NET没有currency 数据类型,作为代替,它提供了decimal。 VB.NET 引入了一种新的数据类型,叫做Char。 Char数据类型占据2个字节,可以存储Unicode 字符。 VB.NET 没有Variant数据类型。为了得到与variant类型相同的结果,你可以使用Object数据类型。因为在.NET中的一切,包括原始数据类型,都是一个对象,一个object类型的变量,它可以指向任何数据类型。 在VB.NET中没有固定长度字符串的概念。 在VB6中,我们使用Type关键字来声明用户自定义结构。VB.NET引入了与此目的相同的结构关键字,语法的其它部分是相同的: Structure MyStruct1 ... End Structure 变量声明 现在看看一个简单的VB6例子: Dim x,y as integer 在这个例子中,VB6 将 x看成variant,把y 看成integer。VB.NET改进了这个解释,它将x 和y都创建成integer。另外,VB.NET 还允许你在声明语句中为变量赋初始值,如下: Dim str1 as string="hello" VB.NET 还引入了Read-Only (只读)变量。只读变量不像常数,声明它的时候不用初始化,但是一旦你给它赋值,就不能再修改。请看下面的例子: "未初始化 Dim readonly x as integer "附值 x=100 "不能再被修改,因此下面的语句将出错 x=200 数组 使用 VB6时,你可以通过编程来定义数组的上限和下限。而在VB.NET中,数组的下限总是0,定义数组时是这样的: Dim aStates(50) as String 这样实际创建的元素是 51 个,其中 0是下限,50是上限。注意:在VB.NET Beta 1中,以上语句会创建50个元素,上下限是 0到 49。 变量范围 考虑以下 VB6 代码: If x=y then Dim z as integer " other code End If z=100 "Outside of If ... Then block 以上代码在VB6中运行得非常好,因为它没有模块级变量作用范围。模块级变量发生在其它高级编程语言中,如C 。在声明模块中定义的变量,如在 If ... Then模块中定义的变量,当这个声明模块结束时就会落在范围之外。这样一来,如果在其定义的If ... Then模块之外存取 z,在高级编程语言中就会导致一个错误。而VB.NET与VB6相反,它使用了模块层的变量范围。 源代码网推荐 源代码网供稿. |
