网页功能: 加入收藏 设为首页 网站搜索  
Visual Basic 9.0 前沿播报·静态篇(三)扩展方法
发表日期:2006-03-05作者:[转贴] 出处:  

Visual Basic 9.0支持新一代语言集成的查询功能,支持在DLinq的数据对象或者XLinq的XML数据上实施关系型的查询,这些查询是利用DLinq或者XLinq相关对象上一组方法(或者叫算符)来实现的。而VB9的开发人员认为这套查询方法也应该能用于现有的对象数据组织方式,比如IEnumerable和其他集合。因此,Visual Basic 9.0需要一种从外部给现有类型增加方法的功能,这就是扩展方法

扩展方法其实是一种编译器后台翻译的方法,原本是接受T类型参数的方法,可以用T类型成员的语法写出。这个语法仅用于类库设计者使用,不宜乱用,所以Visual Basic 9.0不提供特别的语法支持,类库设计者只需要把相应的Attribute置于声明扩展方法的模块与方法上即可。

<Extension()>Module MyExtension <Extension()> _ Public Function Count(Of T)([Me] As IEnumerable(Of T))As Integer For Each Dim item In [Me] Count += 1 Next End Function End Module

注意,我们把扩展方法的第一个参数命名为Me,是为了提醒程序员,这个参数在扩展方法起作用之后,就如同实例方法Me一样,当然这不是必须的,只是一种推荐做法。

扩展方法要起作用,并不是没有条件的,如果谁都扩展Framework中的方法,就会乱成一锅粥了。因此规定,需要用Imports语句导入扩展方法所在的模块,才能让扩展方法起作用。

Imports MyExtionsion

导入扩展方法之后,就可以使用该扩展方法了:

Dim arr = {1, 2, 3, 4, 5} Dim length = arr.Count '以上一句会被自动翻译成 'Dim length = MyExtionsion.Count(arr)

最后提醒一句,扩展方法只是语法糖,没有必要的扩展最好不要使用它。过多的扩展会导致语法清晰,但设计上糟糕的情况出现。请仔细考虑使用这个特性。

我来说两句】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 Visual Basic 9.0 前沿播报·静态篇(三)扩展方法
本类热点文章
  VB.Net常用语法
  VB2005语言新功能
  全面剖析VB.NET
  连接SQL SERVER的公共类(VB.NET)
  Visual Basic 9.0 前沿播报·动态篇(三..
  VB.Net的继承
  如何用VB.Net创建一个三层的数据库应用..
  Visual Basic 9.0 前沿播报·动态篇(二..
  Visual Basic 9.0 前沿播报·动态篇(一..
  重写datagrid(禁止对列宽进行拖拽)
  VB.NET面向对象的实现
  用VB.NET实现五子棋的人工智能
最新分类信息我要发布 
最新招聘信息

关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放  
Copyright ©2003-2019 Lihuasoft.net webmaster(at)lihuasoft.net
网站编程QQ群   京ICP备05001064号 页面生成时间:0.00542