转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
从 Visual Basic 6.0 到 Visual Basic.NET 的转换         ★★★★

从 Visual Basic 6.0 到 Visual Basic.NET 的转换

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2608 更新时间:2009/4/23 18:57:37
资源。CLR 规定这样的对象应当实现 IDisposable 接口,这就提供了 Dispose 方法。当客户端结束对具有 Dispose 方法的对象的使用时,它可以显式调用 Dispose 方法以释放其资源。例如,包装数据库连接的对象应当公开 Dispose 方法。

跟踪垃圾回收器能够正确释放引用循环中的对象。此外,跟踪垃圾回收器的性能比引用计数要好得多。


升级
向导


在大多数情况下,这一改变不会导致问题。如果您的代码中使用了资源句柄开放(连接或文件句柄),则必须显式关闭此句柄。此问题易于检测并会导致运行时错误。

数组

Visual
Basic 6.0

数组可以由任何整数数字的上下限限定。如果在声明中未指定下限,将使用 Option Base 语句确定默认下限。


Visual Basic.NET


为了与其他语言协同操作,所有数组的下限均必须为零。这样就不再需要 Option Base 语句。


升级
向导

ReDim

Visual
Basic 6.0

Visual Basic 6.0 中的固定大小数组和不定大小数组有所区别。固定大小数组通过 Dim 语句声明,在此语句包括此声明中的数组界限。动态数组在 Dim 语句中声明,不指定界限信息。在使用动态数组之前,需要通过 ReDim 语句重新标注动态数组。在 Visual Basic 6.0 中,ReDim 语句提供了在单个语句中为动态数组声明和分配空间的快捷方法。ReDim 语句是 Visual Basic 6.0 中唯一能够同时声明和初始化变量的语句。


Visual Basic.NET


ReDim 语句仅用于为数组分配或重新分配空间,而不能用于重新分配数组。这是因为 Visual Basic.NET 中的所有数组均是动态的,在 Visual Basic.NET 中 Dim 语句既可用于声明动态数组,又可用于初始化动态数组。

由于所有变量声明均可声明变量并指定变量的初始值,使用 ReDim 同时声明和初始化变量就变得多余和不必要了。只需要 Dim 语句声明变量使语言更加简单、一致性更高。


升级
向导


如果 ReDim() 用于声明数组,在代码中会自动插入相应的声明。但是,最好的方法是您自己先在数组中插入 Dim 语句,因为使用 ReDim 声明数组需要升级工具来推断正确的声明。使用 ReDim 也产生了不便处理的代码,因为数组在两处进行了同一声明。

赋值

Visual
Basic 6.0 赋值形式有两种:Let 赋值(默认)和 Set 赋值。用 Set 语句为 cn 赋值。

Visual Basic.NET


仅有一种赋值形式。x = y 意味着将变量或属性 y 的值赋给变量或属性 x。对象类型变量的值是对对象实例的引用,因此如果 xy 是引用类型的变量,将执行引用赋值。这种单一形式的赋值减少了语言的复杂性,并使代码可读性更强。


升级向导


删除 SetLet 语句。解析强类型对象的默认属性,并将属性显式添加到代码中。

有关该主题的全面说明,请参阅白皮书《准备将 Visual Basic 6.0 应用程序升级到 Visual Basic.NET》(英文)。

And、Or、Xor 和 Not

Visual
Basic 6.0

AndOrXorNot 运算符可以执行逻辑运算或位运算(取决于表达式)。


Visual Basic.NET


AndOrXor 仅适用于布尔型。对于 AndOr 运算符,如果第一个运算数的值足以确定运算符的结果,则运算符将简化计算。新的运算符 BitOrBitAndBitXor 均用于位逻辑运算。Bitxxx 运算符不具有简化作用。


升级
向导


如果 And/Or 语句是非布尔型或者包含函数、方法或属性,此语句将升级为使用兼容性函数,与 Visual Basic 6.0 中的表现形式相同。如果 And/Or 语句是布尔型,此语句将升级为使用本地 Visual Basic.Net 语句。

有关该主题的全面说明,请参阅白皮书《准备将 Visual Basic 6.0 应用程序升级到 Visual Basic.NET》(英文)。

运算符优先级

Visual
Basic 6.0

逻辑和位的 AndOrXorNot 运算符的优先级高于比较运算符。


Visual Basic.NET


AndOrXorNot 运算符的优先级低于比较运算符,因此 a > b And a < c 将被认为是 (a > b) And (a < c)。新的 BitAndBitOrBitXor 运算符的优先级高于比较运算符,因此 a BitAnd &HFFFF <> 0 将被认为是 ((a BitAnd &HFFFF) <> 0)

由于 BitAndBitOrBitNot 运算符可以返回数值结果,因此其优先级高于关系运算符,这样,就允许这三个运算符返回的结果与其他值进行比较。


升级
向导


由升级向导处理。有关该主题的全面说明,请参阅白皮书《准备将 Visual Basic 6.0 应用程序升级到 Visual Basic.NET》(英文)。

调用过程

Visual
Basic 6.0

支持两种类型的过程调用:一种使用 Call 语句,要求使用括号括住参数列表;另一种不使用 Call 语句,不能使用括号来括住参数列表。

在 Visual Basic 6.0 中的一种常见情况是,开发者调用的过程不使用关键字,而又在参数列表外使用括号。幸运的是,当有一个以上的参数时,编译器会将其作为语法错误检测出来。但是,当仅有一个参数时,单一参数外的括号会将参数变量传递为 ByVal 而不是 ByRef。这会导致难以找到的小错误。


Visual Basic.NET


在所有情况下参数列表均需要使用括号。


升级向导


为没有使用括号的过程调用插入括号。

静态过程

Visual
Basic 6.0

通过 Static 关键字可以声明过程,此关键字表明在调用之间保留过程的局部变量。


Visual Basic.NET


在过程中不支持 Static 关键字,并且所有的静态局部变量均需通过 Static 语句显式声明。

需要将过程中的所有变量均声明为静态的情况很少。删除此功能简化了语言,并且提高了可读性,因为局部变量总是位于堆栈中,除非已显式声明为 Static


升级
向导


如果过程标记为 Static,则所有的局部变量均变为 Static

参数的 ByVal/ByRef 默认值

Visual
Basic 6.0

参数未指定其默认值为 ByValByRef 时,其默认值为 ByRef


Visual Basic.NET


<参数未指定其默认值为 ByValByRef 时,其默认值为 ByVal

将参数默认值指定为 ByVal 而不指定为 ByRef,可以避免过程错误地修改由调用方传递的变量。这也使得默认的调用规则与赋值一致,以便参数有效地绑定至表达式(通过表达式赋值为正式参数)。

请用户注意避免由 Visual Basic 6.0 升级到 Visual Basic.NET 带来的混乱。如果用户输入的参数声明未显式指定其默认值为 ByValByRef,IDE 将为其自动添加 ByVal 关键字。


升级
向导


为没有指定 ByValByRef 为默认值的参数添加 ByRef

IsMissing 参数和可选参数

Visual
Basic 6.0

没有默认值的可选 Variant 参数将被初始化为特殊的错误代码,此错误代码可以由 IsMissing 函数检测出来。


Visual Basic.NET


在 Visual Basic.NET 中要求所有的可选参数均指定默认值。这样可以减少语言中特殊值的数量,从而简化语言。


升级
向导


IsMissing 函数由 IsNothing 函数代替,并且标记有升级警告注释。

ParamArray 参数

Visual
Basic 6.0

当变量传递给 ParamArray 参数时,可以通过被调用的函数修改。不支持 ByVal ParamArray 元素。


Visual Basic.NET


当变量传递给 ParamArray 参数时,不能通过被调用的函数修改。不支持 ByRef ParamArray 元素。

ParamArray 参数最常见的情况是不修改传递给此参数的变量。不支持 ByRef ParamArray 参数简化了 ParamArray 调用规则,因为 ParamArray 参数将被指定为正常数组。这样,ParamArray 参数可以扩展到任何元素类型,同时需要 ParamArray 参数的函数均可通过数组(而不是参数列表)直接调用。


升级
向导


过程的 ParamArray 参数标记有升级警告。例如,以下代码:

Function MyFunction(ParamArray p() As Variant)
  
''''...
End Function

升级后将变为:

'''' UPGRADE_WARNING: ParamArray p was changed from ByRef to ByVal
  
Function MyFunction(ByVal ParamArray p() As Object)
''''...
End Function

声明中的 As Any 参数

Visual
Basic 6.0

本地 API 的参数可以声明为 As Any,这样对本地 API 的调用就可以传递任何数据类型。通过这一方法,可以调用参数支持两种或多种数据类型的 API。


Visual Basic.NET


重载的 Declare 语句可以定义为允许调用带有两种或多种数据类型的本地 API。例如,以下 Declare 语句:

Private Declare Function GetPrivateProfileString _

Lib "kernel32" Alias "GetPrivateProfileStringA" ( _
ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String) As Long

可以由两个 Declare 版本代替,一个接受 Long,一个接受字符串。

Overloads Private Declare Function GetPrivateProfileStringKey _

Lib "kernel32" Alias "GetPrivateProfileStringA" ( _
ByVal lpApplicationName As String, _
ByVal lpKeyName As String, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String) As Long
Overloads Private Declare Function GetPrivateProfileStringNullKey _
Lib "kernel32" Alias"GetPrivateProfileStringA" ( _
ByVal lpApplicationName As String, _
ByVal lpKeyName As Long, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String) As Long

这提高了类型的安全性,并减少了导致程序失败的小毛病。这一情况的存在是因为编译器不允许通过没有显式定义的数据类型来调用 API。


升级
向导


使用 As Any 参数的 Declare 语句标记有升级警告。

Implements

Visual
Basic 6.0

Implements 语句指定在其出现的类模块中实现的接口或类。

 


Visual Basic.NET


Visual Basic.NET 中的 Implements 与 Visual Basic 6.0 中的 Implements 有两个本质区别:

  • Implements 语句中不能指定类。
  • 每一种实现方法均要求在方法声明语句的结束处使用 Implements 子句。该子句指定其实现的接口方法。

由于要求每一种实现接口方法的方法均使用 Implements 子句,所以提高了代码的可读性;在阅读使用方法来实现接口方法的的代码时,这一优点显而易见。


升级
向导


如果类 a 实现类 b,则将为类 b 声明接口,且类 a 将变为实现类 b 的接口:

Interface _b
  
Function MyFunction() As String
End Interface
Class a
Implements _b
Function b_MyFunction() As String Implements _b.MyFunction
End Function
End Class

属性

Visual
Basic 6.0

在 Visual Basic 6.0 中,特定属性的 GetLetSet 属性函数可以通过不同级别的访问选项声明。例如,Property Get 函数可以声明为 PublicProperty Let 可以声明为 Friend


Visual Basic.NET


属性的 GetSet 函数必须具有相同级别的访问选项。这样就便于 Visual Basic.NET 与其他 .NET 语言协同操作。


升级
向导


如果访问选项的级别不同,则新属性为 Public

默认属性

Visual
Basic 6.0

任何成员均可标记为类的默认值。


Visual Basic.NET


只有接受参数的属性可以标记为默认值。对于将成为集合中的索引的带参数属性,这一情况很常见。

这使得代码的可读性更强,因为对没有成员的对象变量的引用通常指向对象自身,而不是指向上下文中的对象和其他上下文中的默认属性。例如,语句 Call Display(TextBox1) 可能是将文本框实例传递给 Display 函数,也可能是传递文本框的内容。

此外,删除这种二义性避免了使用单独的语句执行引用赋值。赋值 x = y 总是意味着将变量 y 的内容赋值给变量 x,而不是将 y 引用的对象的默认属性赋值给 x 引用的对象的默认属性。


升级
向导


尽可能解析默认属性。无法解析时(延迟绑定对象)将添加错误注释。

枚举

Visual
Basic 6.0

枚举常数可以无限定地被引用。


Visual Basic.NET


如果在文件或项目级别为枚举添加了 Import,则枚举常数可以无限定引用。

这样可以与类、结构和接口保持一致,在类、结构和接口中,可以给成员赋予通用名称,而不必担心与其他成员冲突。例如,Color 枚举和 Fruit 枚举均可以包含名称为 Orange 的常数。在 Visual Basic 6.0 中的规则是,为枚举常数加上前缀使每个常数保持唯一。这使常数名称非常累赘,如 MsColorOrange 和 MsFruitOrange。


升级
向导


对枚举的引用将变为完全限定。

While

Visual
Basic 6.0

While 语句以 WEnd 语句结束。


Visual Basic.NET


为了与其他块结构保持一致,While 的结束语句变为 End While。这提高了语言的一致性和可读性。


升级
向导


WEnd 语句变为 End While

On...GoTo 和 On...GoSub

Visual
Basic 6.0

根据表达式的值,On expression GoTo destinationlistOn expression GoSub destinationlist 语句使程序转向目标列表中的若干个指定行之一。


Visual Basic.NET


上一页  [1] [2] [3] [4]  下一页


[聊天工具]Foxmail 6.0 Beta2最新技巧三则_联络工具_Foxmail…  [聊天工具]Foxmail 6.0 Beta2实用新功能讲解__天极Yesky
[聊天工具]Foxmail 6.0 Beta1新功能快速上手__天极Yesky  [聊天工具]抢先试用Foxmail 6.0 Beta1新功能__天极Yesky
[聊天工具]Foxmail 6.0 Beta1新功能图赏__天极Yesky  [聊天工具]Foxmail 6.0 Beta1发布!加入RSS阅读器
[聊天工具]雅虎通 6.0,让你聊并快乐着!__天极Yesky  [系统软件]Visual Studio 2005 Express Beta Products 下载链…
[系统软件]Visual FoxPro9.0中扩展报表系统功能  [系统软件]Visual FoxPro:我是旁观者
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台