上一题下一题
跳转到
 
 
  世界如此多姿,发展如此迅速,窥一斑未必还能知全豹。但正如万花筒一样,每一个管窥都色彩斑斓。  
 
 
  知识通道 | 学习首页 | 教师首页 | PK首页 | 知识创造首页 | 企业首页 | 登录
 
本文对应知识领域
Visual Basic 9.0 前沿播报�静态篇:对象初始化器和匿名类型
作者:未知 申领版权
2010年11月14日 共有 1026 次访问 【添加到收藏夹】 【我要附加题目
受欢迎度:

    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 String, B As Integer两个成员,但事先没有定义。在VB2005中,你只能去定义它,而在VB9中,你可以将它当作一个Tuple:
    
    Dim item = New {.A = "xyz", .B = 123}
    这一句,VB会为你创造出一个类型,就有两个字段A和B,分别是String和Integer类型,而item就直接成为“那个类型”的实例。匿名类型如前所述,最主要的用途是当成Tuple,可以用来保存查询的临时结果。这时候,局部变量类型推测的好处就体现出来了。注意,按照目前的设计,这一切过程都是在编译时完成的,匿名类型会变成实际类型保存在你的项目中,因此这一操作代价较大。所以Visual Basic组可能还在讨论使用CLR新特性做动态Tuple,让我们继续期待吧。

    

 

相关新闻

您可能对这些感兴趣  

用VB做定时断线程序
VisualBasic中的界面设计原则和编程技巧
VB6.0与Windows API 间的呼叫技巧
制作可以自动隐藏的弹出式菜单
ListBox中的字符串超长显示的解决方法
VB中的Unicode 和 Ansi 格式
优化程序显示速度
Visual Basic 产生渐层的 Form 背景
用VB实现客户——服务器(TCP/IP)
用VB制作注册软件的方法

题目筛选器
日期:
类型:
状态:
得分: <=
分类:
作者:
职业:
关键字:
搜索

 
 
 
  焦点事件
 
  知识体系
 
  职业列表
 
 
  最热文章
 
 
  最多引用文章
 
 
  最新文章
 
 
 
 
网站介绍 | 广告服务 | 招聘信息 | 保护隐私权 | 免责条款 | 法律顾问 | 意见反馈
版权所有 不得转载
沪ICP备 10203777 号 联系电话:021-54428255
  帮助提示    
《我的太学》是一种全新的应用,您在操作中遇到疑问或者问题,请拨打电话13564659895,15921448526。
《我的太学》