| 网站首页 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛 |
 
| 技术教程首页 | 开发语言 | WEB开发 | .NET技术 | 数据库 | 操作系统 | 网页制作 |
 
 
您现在的位置: 编程中国 >> 技术教程 >> .NET技术 >> VB.NET >> VB.NET技术资料 >> 正文
  ►  Visual Basic 9不完全入门之语法增强
Visual Basic 9不完全入门之语法增强
作者:John Chen…    阅读人次:……    文章来源:天极论坛整理    发布时间:2007-9-6    网友评论()条
 
  本文转自博客园,文中内容不代表本站观点,仅提供参考。

  为什么增强?

  由于 .Net Framework 3.5 中许多修改与扩展触及 .Net Framework 2.0 中的已有类(如 LINQ),但又要保证向下兼容,所以微软的设计团队对现有 Visual Basic 语法作出了一些增强。与语法糖一样,它们也是编译时由编译器负责完成的。

  增强了什么?

  ·扩展方法

  ·松弛委托

  ·怎么使用它?

  实际上,这一组功能主要面对的是类库设计人员。

  1. 扩展方法

  扩展方法用于对已有 CLR 类库或是其他类库中的方法进行扩展,事实上也是“语法糖”的一种,只不过更大些,更重要些。在 .Net Framework 3.5 中,为了对已有 CLR 中的类型进行拓展,使其可以使用 LINQ 的查询方式,多处使用了这种扩展。实质上,扩展方法是编译时将调用的函数指向具体的扩展方法,从而达到“扩展”的目的。

  扩展方法必须为 Shared(C# 中的 Static),且必须位于 Module(C# 中的 Static Class)中。

  示例代码

Imports System.Runtime.CompilerServices

Public Module SampleModule Sample
<Extension()> _
Public Function MySum()Function MySum(ByVal [Me] As IEnumerable(Of Integer)) As Integer
 Dim I As Integer
 For Each Obj As Integer In [Me]
  I += Obj
 Next
 Return I
End Function
End Module

  扩展方法仅作用于该 Namespace 中(否则不都乱套了),或用 Imports 引入。执行 LINQ 需要 Imports System.LINQ 命名空间也是一样的道理。

  2. 松弛委托

  Visual Basic 9 之前的版本中,绑定到委托标识符的方法必须完全匹配委托类型的签名。这带来了许多不必要的麻烦,比如在为 Thread 绑定方法时弱类型带来的痛苦。

  而在 Visual Basic 9 中,委托的绑定和定义将允许宽松的类型匹配,只要方法中参数类型能够隐式转换到目标签名。这里使用一个典型的范例,创建一个 New Thread。按装配脑袋的说法,松弛委托可以更松些,把 SampleSub 中的参数一并去掉,依旧可以编译完成...

  示例代码

'在 Visual Basic 8 中,你不可能将这个 Sub 绑定到 ThreadStart 上,但在 VB9 中,一切都成为可能
Public Sub SampleSub()Sub SampleSub(Args As String)

End Sub
'一切都是那么的简单!
Dim Thread As New Thread(AddressOf SampleSub)
Thread.Start()

  本文作者保留全部权力,禁止用于商业用途,非商业用途转载请附加 www.soobb.com链接。

 

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

  • 下一篇文章:

  •  
    相关文章
    原创地带
    24小时热门帖子