程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB.NET >> Visual Basic 9不完全入門之語法增強

Visual Basic 9不完全入門之語法增強

編輯:VB.NET

為什麼增強?

由於 .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()

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved