VB 和 VB.NET 有什麼區別?[關閉]
VB 和 VB.NET 有什麼區別?
最好案例子來說明。
如果您正在為一個新項目做出選擇,那麼相關的要點是:
- VB6 是 legacy(1998 年發布,不再支持 IDE,並且執行時僅支持 Win8 的生命週期)
- VS2008 不支持 VB6
- VB.NET 是一種現代語言,在 VS2008 中得到支持
我想說選擇 VB.OLD 而不是 VB.NET 的理由很少(如果有的話!)。
如果您“只是感興趣”,那麼關於每種語言的 Wikipedia 文章都會提供很多資訊,但簡而言之,它們是完全不同的語言,具有表面上相似的語法。VB 有自己的執行時,其中 VB.NET 是使用更現代的 .NET Framework 的眾多語言之一。
有很多不同之處。
- VB6 和 VB.NET 最大的變化是執行時環境。VB6 使用 VB-Runtime,而 VB.NET 使用 .Net Common Language Runtime (.Net CLR)。CLR 的設計和實現比 VB-Runtime 要好得多。CLR 通過即時編譯器使用更好的程式碼翻譯,而 VB-Runtime 解釋程式碼。CLR 垃圾收集器也比 VB6 更有效,因為它也可以檢測循環引用。
- VB6 是基於解釋器的語言,而 VB.NET 是編譯語言
- VB6 不是一種類型安全的語言,而 VB.NET 是一種類型安全的語言。VB.NET 中沒有變體類型,VB.NET 中也沒有發生神奇的類型轉換
其他一些區別:
遺產
VB.Net 通過允許您定義作為派生類基礎的類來支持繼承。派生類繼承並可以擴展基類的屬性和方法。他們還可以使用基類的新實現來覆蓋繼承的方法。預設情況下,使用 VB.Net 創建的所有類都是可繼承的。因為您設計的表單實際上是類,所以您可以使用繼承在現有表單的基礎上定義新表單。有關詳細資訊,請參閱Visual Basic 中的繼承。
異常處理
VB.Net 支持結構化異常處理,使用其他語言(如 C++)支持的 Try…Catch…Finally 語法的增強版本。結構化異常處理將現代控制結構(類似於 Select Case 或 While)與異常、受保護的程式碼塊和過濾器相結合。結構化異常處理使創建和維護具有強大、全面的錯誤處理程序的程序變得容易。有關詳細資訊,請參閱異常處理簡介。
重載
重載是定義具有相同名稱但使用不同數據類型的屬性、方法、過程或運算符的能力。您可以使用重載過程來提供處理不同類型數據所需的盡可能多的實現,同時呈現出單一的多功能過程的外觀。有關詳細資訊,請參閱重載的屬性和方法。
覆蓋屬性和方法
Overrides 關鍵字允許派生對象覆蓋從父對象繼承的特徵。重寫的成員與從基類繼承的成員具有相同的參數,但它們具有不同的實現。成員的新實現可以通過在成員名稱前加上 MyBase 來呼叫父類中的原始實現。有關詳細資訊,請參閱覆蓋屬性和方法。
建構子和解構子
建構子是控制類的新實例初始化的過程。相反,解構子是在類離開作用域或設置為 Nothing 時釋放系統資源的方法。VB.Net 支持使用 Sub New 和 Sub Finalize 過程的建構子和解構子。有關詳細資訊,請參閱對像生命週期:如何創建和銷毀對象。
數據類型
VB.Net 引入了三種新的數據類型。Char 數據類型是一個無符號的 16 位量,用於儲存 Unicode 字元。它等效於 .NET Framework System.Char 數據類型。Short 數據類型是帶符號的 16 位整數,在早期版本的 Visual Basic 中被命名為 Integer。Decimal 數據類型是 96 位有符號整數,按 10 的可變冪進行縮放。在早期版本的 Visual Basic 中,它僅在 Variant 中可用。此外,Visual Basic 現在支持無符號整數數據類型(UShort、UInteger 和 ULong)以及有符號類型 SByte。有關詳細資訊,請參閱Visual Basic 中的數據類型。
介面
介面描述類的屬性和方法,但與類不同,介面不提供實現。使用Interface語句聲明介面;使用 Implements 語句編寫程式碼,將介面中描述的項目付諸實踐。有關詳細資訊,請參閱Visual Basic 中的介面。
代表們
委託是可以代表您呼叫對象方法的對象,有時被描述為類型安全、物件導向的函式指針。您可以使用委託讓過程指定在事件發生時執行的事件處理程序方法。您還可以在多執行緒應用程序中使用委託。有關詳細資訊,請參閱委託和 AddressOf 運算符。
共享成員
共享成員是類的所有實例共享的屬性、過程和欄位。當多個對象需要使用所有對象共有的資訊時,共享數據成員很有用。您可以使用共享類方法,而無需先從類中創建對象。有關詳細資訊,請參閱Visual Basic 中的共享成員。參考
您可以使用引用來使用在其他程序集中定義的對象。在 VB.Net 中,引用指向程序集而不是類型庫。有關詳細資訊,請參閱參考資料和 Imports 聲明。
命名空間
命名空間通過將類、介面和方法組織成層次結構來防止命名衝突。有關詳細資訊,請參閱Visual Basic 中的命名空間。
組件
程序集通過描述特定組件或應用程序所需的所有文件來替換和擴展類型庫的功能。一個程序集可以包含一個或多個命名空間。有關詳細資訊,請參閱程序集。
屬性
您可以使用屬性來提供有關程序元素的附加資訊。例如,您可以使用一個屬性來指定當該類用作 XML Web 服務時應該公開該類中的哪些方法。有關詳細資訊,請參閱Visual Basic 中的屬性。
多執行緒
您可以使用 VB.Net 編寫可以獨立執行多個任務的應用程序。可以阻止其他任務的任務可以在單獨的執行緒上執行,這個過程稱為多執行緒。通過使復雜的任務在與使用者界面分離的執行緒上執行,多執行緒使您的應用程序對使用者輸入的響應更快。有關詳細資訊,請參閱多執行緒應用程序。
位移運算符
VB.Net 現在支持整數數據類型(Byte、Short、Integer 和 Long)以及無符號類型(UShort、UInteger 和 ULong)的算術左移和右移操作。算術移位不是循環的,這意味著從結果的一端移出的位不會在另一端重新引入。還提供了相應的賦值運算符。有關詳細資訊,請參閱位移運算符和賦值運算符。
循環變數聲明
您可以使用 VB.Net 將循環變數聲明為 For 或 For Each 循環的一部分。您可以在 For 或 For Each 語句中為變數包含 As 子句,前提是在循環外沒有聲明該名稱的變數。以這種方式聲明的循環變數的範圍是循環本身。有關詳細資訊,請參閱For…Next 語句 (Visual Basic)和For Each…Next 語句 (Visual Basic)。
更多資訊:
- <http://social.msdn.microsoft.com/Forums/en-SG/Vsexpressvb/thread/15f1ed35-47c4-4ae0-a8a6-16bad23f6947>
- <http://msdn.microsoft.com/en-us/library/ms172618.aspx>
- <http://msdn.microsoft.com/en-us/library/y17w47af.aspx>
- <http://www.thescarms.com/vbasic/vb6vsvbnet.aspx>
- <http://www.programmersheaven.com/2/FAQ-VBNET-VB6-VBNET-Differences>
- 面向 Visual Basic 6.0 使用者的 Visual Basic 語言新增功能
編輯:正如評論的那樣,VB6(以不同的方式)已經支持一些特性,如建構子,看看最後一個連結是什麼考慮了更多