VB当中的新语法:扩充方法_VB.net_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

VB当中的新语法:扩充方法

作者:黑客防线网安VB教程基地 来源:黑客防线网安VB教程基地 浏览次数:0

本篇关键词:方法语法当中Module
黑客防线网安网讯:    在 VB 的几个新语法当中,扩充方法也是很有趣的功能之一,某种角度来说,它让我在上课时几乎已经要丢在一边的 Module 关键词又重新开启了另一个重生的机会。 简单的说,扩充方法就是以额...

    在 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()

总的来说,扩充方法的出现,让程序设计的自由度与灵活度又提高了。

 

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-14786-1.html
网站维护教程更新时间:2012-04-03 01:14:23  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer