本文转自博客园,文中内容不代表本站观点,仅提供参考。
为什么增强? 由于 .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链接。
查看本文来源