概述從VB6到VB.NET的變化
深入了解 ASP.NET... 這篇文章論述了從VB6/VBScript 到VB.NET的重要的語言變化。當創建ASP.NET頁時, 你必須使用一種與.NET兼容的編程語言,正如 C#, VB.NET, 或者 JScript.NET. 然而,從VB6/VBScript 到VB.NET 有一些重要的變化,這也是我們這篇文章要談論的問題。要從整體上更深入的了解 ASP.NET , 請查閱 ASP.NET Article Index! 同樣,要獲得更多的資料請查閱微軟的文章: Preparing Your Visual Basic 6.0 Applications for the Upgrade to Visual Basic.NET. |
緒論
隨著微軟.NET開發平臺的發布,Visual Basic 已經融入了一個完全的面向對象語言 (命名為VB.NET). 然而由于這些跟本的變化,從VB6到VB.NET的進階,即使是經驗豐富的程序員,也要花相當多的時間。我將試圖在下面列出VB.NET對于Visual Basic的語言變化,并盡可能在恰當的地方給出范例. 這個列表不一定完整,但它的確覆蓋了主要的特征。如果你是一個想升級到VB.NET 的VB程序員,那這篇就是你的必讀文章.
注意到當前的(到2001年5月30),ASP.NET 還是Beta 1版本,它可以從www.ASP.NET免費的下載.然而,這篇文章所談到的一些變化是對于Beta 2版本(將計劃于6月17發布)來說的,因此對于Beta 1 版本它們是不會起作用的。這部分變化將會在下邊的文章里特別說明.
數據類型的變化
.NET 平臺給所有它支持的語言提供了一個公共數據類型系統(Common Type System)。作為通用語言運行環境的強制標準,所有的語言必須支持相同的數據類型。這結束了眾多語言數據類型不兼容的狀況。例如,在32位的 Windows平臺, C++中的整型數據占用了4個字節,然而在VB中,它只占用了2個字節。下面是在VB.NET中關于數據類型的主要變化:
在 .NET下VB.NET中的整型數據也是4個字節。
VB.NET 沒有現金(currency)數據類型.以十進制小數給于替換.
VB.NET 引入了一個名為 Char的新的數據類型。它占用2個字節,并可以存放Unicode字符。
VB.NET 沒有 Variant 數據類型. 為了獲得與variant 數據類型相似的效果,可以用Object 數據類型。 (由于任何事物在.NET中—— 包括基本的數據類型——都是對象,一個object類型的變量可以指向任何數據類型。)
在 VB.NET 中沒有定長字符串的概念。
在 VB6 中用 Type 關鍵字來聲明用戶定義的結構。在VB.NET中用Structure 關鍵字來到相同的目的. 其余部分的語法是不變的. 例如:
| Structure MyStruct1 ... End Structure |
聲明變量
讓我們看一個在VB6中的簡單例子:
| Dim x,y as integer |
在這個例子中 VB6 會認為 x是一個variant 變量 ,而y是一個integer變量, 這是個有點古怪的語法現象。VB.NET 糾正了這個問題,將 x 和 y 都創建為 integer 變量。此外, VB.NET 允許你在聲明一個變量的同時賦予它初始值,如:
| Dim str1 as string="hello" |
VB.NET 還引入了只讀 (Read-Only) 變量. 與常數變量不同的是只讀變量可以在聲明的時候不賦予它初始值,但是一旦你給它賦了值,它就不能再改變了,例如:
| 'no initialization here Dim readonly x as integer 'in later code x=100 'now x can't be changed x=200 '***** error ********* |
數組
在 VB6中, 你可以定義數組的下界和上界。但是,在VB.NET中,數組的下界總是零。同樣,當你對一個數組進行如下定義時:
| Dim aStates(50) as String |
實際上, 生成了51 個數據元素,0是這個數組的下界,50是上界!(注意:在 Beta 1 版本的 VB.NET 編譯器中, 上面的聲明將生成50個數據元素,邊界從0到49。)
在 Part 2 我們將繼續探索VB.NET前所未有的新特性!