升级向导
如果访问选项的级别不同,则新属性为 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。
OnGoTo 和 OnGoSub
Visual Basic 6.0
根据表达式的值,On expression GoTo destinationlist 和 On expression GoSub destinationlist 语句使
程序转向目标列表中的若干个指定行之一。
Visual Basic.NET
OnGoTo 和 OnGoSub 是非结构化的编程构造。它们的使用让
程序更加难以阅读和理解。Select Case 可以提供一种更加结构化和灵活的方法来执行多个分支。
注意:仍然支持 On Error GoTo。
升级向导
以下示例:
On MyVariable GoTo 100,200,300
将标记有升级错误:
'' UPGRADE_ISSUE On MyVariable GoTo was not upgraded
On MyVariable GoTo 100,200,300
您应当重写代码以避免使用这样的语句,例如:
On x Goto 100,200,300
可以重写为:
Select Case x
Case 1: ''插入第 100 行的代码
Case 2: ''插入第 200 行的代码
Case 3: ''插入第 300 行的代码
End Select
GoSubReturn
Visual Basic 6.0
GoSub lineReturn 语句在过程中分支到子例程,然后从子例程返回。
Visual Basic.NET
GoSubReturn 是非结构化编程构造。它的使用让程序更加难以阅读和理解。一个更加结构化的替代方案是:创建可以调用的独立过程。
升级向导
与 OnGoTo 相同,这些语句均标记有升级错误。
LSet
Visual Basic 6.0
LSet 用空格填充字符串使其为指定长度,或者将用户定义类型的变量复制到另一个用户定义类型的变量。
Visual Basic.NET
不支持 LSet 语句。LSet 对类型而言很不安全,因此会在运行时导致错误。此外,由于它对类型而言不安全,因此执行时代码必须完全可靠。删除 LSet 语句后无法将一个结构复制到另一个结构;但是,可以修改 Visual Basic.NET 代码,使用 RtlCopyMemory 来获得相同的效果。
升级向导
语句:
LSet a1 = a2
将标记有升级错误
'' UPGRADE_ISSUE: LSet cannot assign a UDT from one type to another
LSet a1 = a2
VarPtr、StrPtr 和 ObjPtr
Visual Basic 6.0
VarPtr、StrPtr 和 ObjPtr 以整数形式返回变量的地址,然后将此地址传递到使用地址的 API 函数(例如 RtlCopyMemory)。VarPtr 返回变量的地址,StrPtr 返回字符串的地址,ObjPtr 返回对象的地址。这