您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> VB >> 真题 >> 正文    
  VB在建立对象时的新写法 【注册男护士专用博客】          

VB在建立对象时的新写法

www.nanhushi.com     佚名   不详 

  在VB 2008当中,配合LINQ新增了许多新的语法,底下这也是VB在建立对象时的新写法:
  Dim stud1 As New students With {.name = "David", .score = 100}
  上述指令会建立一个students 对象的实体,并且填入默认的值。
  这样的写法简便不少,该对象的类声明如下:
  Public Class students
  ’这边应该写成property, 只是我稍微偷懒一下写成field,不影响demo
  Public name As String
  Public score As Single
  End Class
  上面黄色程序代码这样的方式我们称之为命名类型的对象声明,既然,有命名类型,就一定会有匿名类型的声明方式,语法如下:
  Dim stud2 = New With {.name = "David", .score = 100}
  这个就炫了吧,不用类型照样可以声明出一个对象实体,这个在VB 2008称为匿名类型,其实和LINQ有相当大的关系,干嘛搞出一个匿名类型呢? 它可以方便我们不需要事先建立一个类,就可以具有对象实体,会有这样的需求?
  某些时候,我们只想要产生一个对象,并且随手就拿来用了,我们可能懒的声明一个对象的类,然后再用New指令产生一个对象实体,也有时候我们只是希望建立一个临时的对象来存放特定数据处理(查询)之后的结果,最典型的例子就是LINQ(之后再述),因此匿名类型就应运而生了。
  匿名类型并不特别也不神奇,实现的方式很简单,Compiler 会自动依照你的需要,帮您建立一个类Class,帮你自动决定类中属性的型态。这个自动建立的类没有名称(因为是编译阶段自动建立的,所以没名称也不要紧,反正我们在程序代码当中也不会用到这个类,只会用到这个类产生的对象实体)、这个类会直接继承自 Object,并且包含您在声明对象时指定的属性。
  这个特性是一个基础,它让LINQ查询的结果可以自动建立成一个对象,例如我们在介绍的LINQ功能中,有一段程序代码:
  Structure BMI
  Dim name As String
  Dim height As Integer
  Dim weight As Integer
  Dim BmiValue As Single
  End Structure
  Dim matrix(5) As BMI
  (...略...)
  ’查询BMI值大于25的人
  Dim result = From c In matrix Where c.BmiValue > 25
  其中matrix是一个对象没有错,但是result是什么类型? 怎么出现的? LINQ查询会建立出一个对象? 怎么建立的呢? 关键就在匿名类型。
  有了匿名类型这样的技术作为基础,LINQ的查询结果(对象)就可以不需要事先建立一个特定类作为存放查询结果的数据类型。而可以通过编辑器自动产生这个类,我们只需要直接把结果(对象)拿来用,因为我们在意的是这个查询结果对象而非该类本身。
  不过这边要注意,并非所有的LINQ查询结果一定就需要建立一个匿名类型来存放,也有可能只需要系统内建的类型即可。
  例如:
  Dim result = From c In matrix Where c.BmiValue > 25 Select c.name
  result 就只需要String类型即可。
  anyway, 匿名类型确实让开发人员在编写程序代码的时候有更多的可能性,也方便许多,同时间,你也会发现,编译程序暗地里帮我们做了很多的事情...说到这个,下次有机会时来谈谈编译程序是怎么看待LINQ指令的,你会发现VB2008的编译程序比过去忙碌了许多。

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    VB在建立对象时的新写法
    专 题 栏 目

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)                            【进男护士社区逛逛】
    姓 名:
    * 游客填写  ·注册用户 ·忘记密码
    主 页:

    评 分:
    1分 2分 3分 4分 5分
    评论内容:
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。