我们要来看的第二个VB新语法称为『区域类型推断』,简单的说,就是当你宣告变量时不指定类型的时后编译程序会自动帮你决定变量的类型,而不是一律的以object作为变量的类型,运算时再通过boxing来解决。
过去,当你键入底下的程序代码:
Dim v
这个变量v是Object类型,在旧版的VB 6.0当中,则是variant,如今,当你在编辑器当中输入这样的程序代码:
Dim v = 3
你的变量v类型会自动设为integer,倘若是:
dim v = 3.14
你的变量v类型会自动设为double。
总括来说,编译程序会依照初始值来决定变量类型。
甚至,变量的类型也可以由函数的返回值来决定,例如:
Dim ret = getBMI()
严格说起来,这些动作都是编辑器自动帮你做的, 对程序代码来说没有什么太大的影响,有一些部分也是因为在过去VB本来就会进行相当多的隐含类型转换,所以这些动作对开发人员来说没啥特别的感觉,但是实务上它可以加快程序运行的速度(因为不需要再做这些类型转换)
然而,你可能看到更多的使用场合是把这个机制和LINQ的查询返回值混在一起,再回头看前几天介绍的LINQ语法:
’查询BMI值大于25的人
Dim result = From c In matrix Where c.BmiValue > 25
从这边你会看到通过查询语法所返回的值,也是通过这样的机制来建立的。总的来说VB在语法上的更新,蛮多都实现在LINQ相关的应用上,这也是先前说过VB新语法与LINQ几乎脱不了关系。
另外,由于有类型推断,你可以在VB当中直接这么写:
你可以直接把XML以Copy Paste的方式贴到程序代码编辑区,然后定义一个变量来承接,由于具有类型推断的功能,因此xmlData变量会被定义成xElement类型,写起程序来方便多了。
责任编辑:小草