因為未來微軟 .NET 平台的執行環境與現今大大的不同,未來 Class 可以跨語言地繼承,也就是 VB 可以繼承 C# 的 Class 等等。原始程式碼編譯成 Managed Code,平台提供執行時期將 IL 編譯成執行碼等等。在再讓 VB 必須要脫胎換骨。所以 Visual Basic.NET 將會有絕大的改版,與以往的六個版本截然不同。
Visual Basic.NET 與以往的版本實在差別太多,在這裡無法一一詳述。僅列舉明顯且重用的部分。 < Visual Basic 6 與 Visual Basic.NET 差異的部分 >以下先介紹 VB6/Visual Basic.NET 都有的部分,但 Visual Basic.NET 改變使用方式或關鍵字更新。內容有
- 不再使用 Set 和 Let
- Class 的屬性撰寫
- Subroutines 和 Functions
- 完整的資料型態範圍
- 宣告變數、常數和陣列
- 變數範圍(Variable Scope)
- 結構化例外處理(Structured Exception Handling)
- 使用正確的資料型別
- 使用者自訂資料結構(Structure)
不再使用 Set 和 Let 不再使用 Set 和 Let 關鍵字,除非在 class 檔案中設定屬性。因為在 Visual Basic.NET 中不再使用預設(default)屬性和方法,所以不需要靠他們來辨別,你在使用物件的方法與屬性時,若要設定變數值,一定要指明清楚。也就是原先在 VB6 若要設定變數 obj 內容為 objThis,必須要
Set obj=objThis
而接收預設屬性則可以
att=objThis 以及 att=objThis.DefaultAtt 兩種寫法
所以若 objThis 物件有一個預設屬性叫 DefaultAtt,若不寫 Set 會不清楚到底要存取 objThis 物件的參照還是 objThis.DefaultAtt 這個預設屬性。但到了 Visual Basic.NET,若你要讀取 DefaultAtt,因為沒有預設屬性的使用方式,所以只有(且一定要)以 objThis.DefaultAtt 這種寫法來讀取 DefaultAtt 屬性。
所以當你使用下列程式碼時
obj=objThis
那一定是要 objThis 這個物件參照,而不會模擬兩可。而這種寫法讓 Visual Basic.NET 的語法與 JavaScript 和 C# 的語法更為接近。
在 Visual Basic.NET 中 Class 的屬性撰寫
在 VB 6 要撰寫一個物件的屬性會利用以下的程式碼,其中 Property Get 是用來讓使用者讀取屬性,而 Property Set/Let 則是用來設定屬性,至於是要使用 Set 還是 Let 則要看賦予的屬性是物件還是一般的變數型別。
Private m_myProperty As Variant
Public Property Get myProperty() As Variant
If IsObject(m_myProperty)
Then Set myProperty = m_myProperty
Else
myProperty = m_myProperty
End If
End Property
Public Property Set myProperty(ByVal vNewValue As Variant)
Set m_myProperty = vNewValue
End Property
Public Property Let myProperty(ByVal vNewValue As Variant)
m_myProperty = vNewValue
End Property
但在 Visual Basic.NET 的程式碼要改成
Private m_myProperty As String
Public Property myProperty() As String
Get
myProperty = m_myProperty
End Get
Set
m_myProperty = Value
End Set
End Property
這個語法也是與 C# 的語法更為相似。
另外在 Visual Basic.NET 你必須要明確的利用 ReadOnly 或 WriteOnly 關鍵字來設定屬性是否為唯讀或唯寫,所以程式碼為
Public ReadOnly Property myProperty() As String
Get