摘要:在Visual Basic 2005以前的版本,如果类或结构没有定义初始化构造函数,我们就必须用属性逐一赋值的方式。比如'假设有个结构Person,有Name和Age属性
'VB 2005代码
Dim p As Person
With p
.Name = "Jack"
.Age = 27
End With
这样,对象的初始化不能与对象的定义同时完成,多少有些不便。特别是我们在表达式中需要Person类型的时候,无法就地生成,必须另写代码初始化,这会打断我们的思路。Visual Basic 9.0为所有对象提供了一个表达式初始化语法,让你可以对任何公有属性在初始化时一并赋值。(其实我早就想要这个语法了,呵呵)Dim p = New Person{.Name = "Jack", .Age = 27}
看这个语法比以前简洁多了,就好像把With语句写在了初始化语句里一样。初始化语法并没有取代构造函数,而且它还可以和构造函数任何混合使用。比如假设Person类型有一个初始化Name的构造函数,你便可以这样写。Dim p = New Person("Jack") {.Age = 27}
也就是说,初始化器并非要求对所有属性进行初始化。对系统里的List(Of T)类型,VB9还专门实现了List初始化语法:Dim l1 = New List(Of Integer){1, 2, 3, 4}
Dim l2 = New List(Of Person){ _
New Person{.Name = "Jack", .Age = 27}, _
New Person{.Name = "Lucy", .Age = 26}}
这种特性着实给我们编写代码带来了很大的方便,也让“表达式”所能表达的内容大大丰富了。“一句话编程”正在慢慢引入VB,呵呵。
最后我们介绍一下匿名类型。当你恰好需要一个结构变量有A As......[
阅读全文]