不再有Let属性过程,因为所有赋值语句的语法(无论是对象还是非对象)都已经一样。
语言方面的改动远远超过了对体系结构的改动。对于大多数人来说这些改动都有意义,但仍有人对某些改动存有异议。例如,在以前的版本中,许多任务可以用多种不同的方法完成,统一的编码标准要么不存在,要么很难执行。为了“清理”VB语言,Microsoft对VB作了一些重大的改动,许多以前可以有多种实现方法的任务现在只有一种方法。
除了前面几个表格列出的内容之外,下面是一些特别需要注意的地方。
首先,向过程参数传递数据的默认方式由原来的传递引用(ByRef)变成了传递值(ByVal),这是一个很重要的改动。通过引用传递参数比通过值传递参数面临着更多的危险,这种危险在于被调用过程可能无意地改变参数的值。VB.NET仍旧允许以引用方式传递参数,但默认参数传递方式的改变意味着
程序必须作相应的调整。
第二,VB.NET中不再有Set语句,把对象引用赋给变量现在只需一个等号就可以了,对象可以象任何其他值一样对待。虽然省略Set简化了代码,但也有一个附带的影响:默认属性不再有效。例如,下面这种属性值引用方法不再合法:
Text1 = "这是对象的默认属性值。"
相反,属性值必须按照如下方式显式引用:
Text1.Text = "这是对象的默认属性值。"
从表面上看来,VB.NET作这种要求似乎没有必要。但事实上,它对于摆脱默认属性来说却是必要的。例如,假设有一个名字为objFoo的对象变量,由于没有了Set语句,假若属性值仍旧可以象原来一样引用,下面这个语句到底是什么意思就很难确定了:
objFoo = Text1
这个语句是设置了一个对Text1的引用,还是把Text1的Text属性值赋给了objFoo?我们无法作出判断,编译器也同样不能判断。因此,抛弃Set语句也就意味着必须放弃默认属性值。
.NET中最不让人喜欢的改动:Microsoft改变了一些早就在使用的数据类型的含义。在.NET中,Integer变成了32位,而Long则是64位。可以想象,这种改变将导致
程序员频繁地用错变量类型。例如,调用某个API函数时应该使用16位的Integer还是使用32位的Integer?但愿Microsoft能够重新考虑这个决定,采用一些新的变量类型名字,如Int32和Long64。
VB.NET引入了Option Strict关键词。Option Strict关键词用于替代Option Explicit。原来的VB允许把一个数字值赋给字符串变量,或者进行其它类似的不正常赋值操作,Option Strict结束了这种情况。声明Option Strict告诉Visual Basic.NET不要进行任何强制的类型转换。当然,VB.NET也不是完全限制了类型自动转换:它允许进行向下的自动类型转换(Cast),但不支持向上的自动类型转换。例如,如果不是使用“sngvariable = CSng(dblvariable)”这类语句进行显式的类型转换,声明为Single的变量不能设置为Double变量的值,因为它可能导致数据丢失;然而,Double变量可以直接设置为Single类型变量的值,且无需显式地进行类型转换,因为这里不存在数据丢失
问题。使用Option Strict能够帮助开发者减少许多错误,包括许多难以调试的错误。附带说明:使用Option Strict时不允许再使用延迟绑定(Late Binding)。