您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> VB >> 真题 >> 正文    
  VB当中的新语法(扩充方法) 【注册男护士专用博客】          

VB当中的新语法(扩充方法)

www.nanhushi.com     佚名   不详 

  在VB的几个新语法当中,扩充方法也是很有趣的功能之一,某种角度来说,它让我在上课时几乎已经要丢在一边的Module关键词又重新开启了另一个重生的机会。
  简单的说,扩充方法就是以额外的程序代码替原有的Class(不管你有没有这个Class的源代码,不管是原本系统的Class或是你自己写的)增加新的Method。
  作法是开启一个新的Module文件,并在当中建立一个Method,例如:
  Module IntergerExtensions
  <System.Runtime.CompilerServices.Extension()>Public Sub Show(ByVal para As Integer)
  MsgBox(para)
  End Sub
  End Module
  请注意,一定要声明在Module当中,并且加上<System.Runtime.CompilerServices.Extension()>特征关键词 。由于这个函数的参数是Integer,如此一来,就会自动帮原有的Integer类增加了一个Show方法,因此你在编写主程序的时候,会发现只要用到integer的变量,打个点,就可以自动带出Show方法:

  当然,并不是Integer就真的有这个新的Method,更不是继承的观念,纯粹只是Compiler和IDE进行某种程度的 "混淆视听" 之后的结果。IDE负责让你在开发的时候有intellisense可以用,Compiler则负责去解读这种特殊的语法转换成一般呼叫函数的程序代码。
  使用的方法就是那么简单,即可让原有的Class增加新的功能,别忘了,使用前要在主程序中Import这个Module。例如:
  Imports WindowsApplication1.IntergerExtensions
  (由于我的程序的root Namespace是WindowsApplication1,而Module Name是IntergerExtensions,因此我会这样写)
  说真的,这个功能我觉得放在Module当中还蛮有点道理的,因为扩充方法其实是Public Shared 类型,且实务上我们可以把一些常用的Method(Sub或Fucntion)集中在一个或数个Module当中,赋予适当的Module Name做为区分,这样在编写程序的时候不需要回头找这些Method放在哪一个NameSpace底下,然后再去调用它,反而可以像上图一样,用到Integer的时候就直接调用我们帮Integer编写的扩充方法,因为它根本已经变成(长的像而已,不是真的是)特定类型对象(例如上面例子中的Integer)的方法,所以想用的时候 "随手" 就可以用,撰写程序代码时,只需要在该类型的对象旁打个点,就会自动带出符合该类型的对象可用的Method,相当好用。
  如果你熟悉泛型的观念,考试大和大家一起继续往下看,底下这段程序代码很有趣:
  Public Sub Show(Of T)(ByVal para As T)
  MsgBox(para)
  End Sub
  我们把原本的Integer换成了泛型写法,通过这样的方式,我们在使用扩充方法的时候也更加的方便了:
  Dim a As Integer = 60
  a.Show()
  Dim b As String = "test"
  b.Show()
  总的来说,扩充方法的出现,让程序设计的自由度与灵活度又提高了。

 

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

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

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    VB当中的新语法(扩充方法…
    专 题 栏 目

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

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