、BitAnd 和 BitXor 均用于位逻辑运算。Bitxxx 运算符不具有简化作用。
升级向导
如果 And/Or 语句是非布尔型或者包含函数、方法或属性,此语句将升级为使用兼容性函数,与 Visual Basic 6.0 中的表现形式相同。如果 And/Or 语句是布尔型,此语句将升级为使用本地 Visual Basic.Net 语句。
有关该主题的全面说明,请参阅白皮书《准备将 Visual Basic 6.0 应用
程序升级到 Visual Basic.NET》(英文)。
运算符优先级
Visual Basic 6.0
逻辑和位的 And、Or、Xor 和 Not 运算符的优先级高于比较运算符。
Visual Basic.NET
And、Or、Xor 和 Not 运算符的优先级低于比较运算符,因此 a > b And a < c 将被认为是 (a > b) And (a < c)。新的 BitAnd、BitOr 和 BitXor 运算符的优先级高于比较运算符,因此 a BitAnd &HFFFF <> 0 将被认为是 ((a BitAnd &HFFFF) <> 0)。
由于 BitAnd、BitOr 和 BitNot 运算符可以返回数值结果,因此其优先级高于关系运算符,这样,就允许这三个运算符返回的结果与其他值进行比较。
升级向导
由升级向导处理。有关该主题的全面说明,请参阅白皮书《准备将 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
参数未指定其默认值为 ByVal 或 ByRef 时,其默认值为 ByRef。
Visual Basic.NET
<参数未指定其默认值为 ByVal 或 ByRef 时,其默认值为 ByVal。
将参数默认值指定为 ByVal 而不指定为 ByRef,可以避免过程错误地修改由调用方传递的变量。这也使得默认的调用规则与赋值一致,以便参数有效地绑定至表达式(通过表达式赋值为正式参数)。 请用户注意避免由 Visual Basic 6.0 升级到 Visual Basic.NET 带来的混乱。如果用户输入的参数声明未显式指定其默认值为 ByVal 或 ByRef,IDE 将为其自动添加 ByVal 关键字。
升级向导
为没有指定 ByVal 或 ByRef 为默认值的参数添加 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 参数时,不能通过被调用的函数修改。不支持