很久以來,VB因?yàn)槿狈ν晟频拿嫦驅(qū)ο笾С、缺乏高效的錯(cuò)誤處理機(jī)制和性能表現(xiàn)不佳,因而一直受到某些人的嘲笑。VB.NET將徹底改變這種情況。然而,VB.NET在這些方面的改進(jìn)也要付出代價(jià),許多舊的代碼需要手工進(jìn)行轉(zhuǎn)換才能在VB.NET下運(yùn)行。
下面幾個(gè)表格總結(jié)了VB.NET語言在語法上的改動之處。注意這些表格并沒有完全列出所有改動之處,但列出了最重要的一些改動。
表A對比了VB6中一些熟悉的語法形式及其在VB.NET中類似功能最接近的語法形式。
表A:語法對比舊語法 新語法 說明窗體裝載事件,類初始化事件 Sub New procedure Sub New稱為構(gòu)造方法(Constructor),它可以有參數(shù)。
Property Let Property Set Let關(guān)鍵詞不再有效。
Currency Decimal 在VB6中,Decimal是Variant的一種子類型,但在。NET中它是一種固有的數(shù)據(jù)類型。。NET不再支持Currency數(shù)據(jù)類型。
Variant Object VB.NET的Object數(shù)據(jù)類型兼有VB6 Object類型和Variant類型的能力。
Debug.Print Debug.Write Debug.WriteLine 這個(gè)變化只是名稱上的簡單變化:從Print變?yōu)閃rite和WriteLine. Wend End While VB.NET推薦使用While循環(huán)而不是Do循環(huán)。
為了讓VB的數(shù)據(jù)類型和其他。NET語言的數(shù)據(jù)類型相匹配,Microsoft修改了整數(shù)類數(shù)據(jù)類型的表示方法,并加入了一個(gè)新的數(shù)據(jù)類型。這些改動對于進(jìn)行外部調(diào)用的方法尤其重要(比如API調(diào)用)。例如,如果被調(diào)用函數(shù)需要一個(gè)32位的整數(shù)參數(shù),則在VB6中它應(yīng)該聲明為Long,在VB.NET中應(yīng)該聲明為Integer.
表B:和整數(shù)有關(guān)的數(shù)據(jù)類型長度 VB6以及更早版本中的名稱 VB.NET中的名稱16 bit Integer Short 32 bit Long Integer 64 bit (無) Long
在VB.NET中,Microsoft減少了許多原先用于VB6的關(guān)鍵詞,代之以“框架類”。之所以要進(jìn)行這種替換,是因?yàn)榭蚣茴愔械墓δ軐λ械?NET語言都有效。下表列出了部分受影響的關(guān)鍵詞。
表C:被替換的關(guān)鍵詞
VB關(guān)鍵詞 VB.NET名稱空間中的位置 方法/屬性
Circle System.Drawing.Graphics DrawEllipse
Line System.Drawing.Graphics DrawLine
Atn System.Math Atan
Sgn System.Math Sign
Sqr System.Math Sqrt
Rnd Microsoft.VisualBasic.Compatibility.VB6 Rnd
Round Microsoft.VisualBasic.Compatibility.VB6 Round
Lset System.String PadRight
Rset System.String PadLeft
DoEvents System.Winforms.Application DoEvents
VarType System.Object GetType(返回類Type的對象,其中包含了可提取出信息的屬性)
在VB.NET中,變量、數(shù)組的聲明和初始化方法都有所變化,下表概要地列出了VB.NET在這方面的變化。
表D:新的聲明方法
變化 語法舉例
單個(gè)聲明語句中不能聲明多種類型。 'VB.NET不允許出現(xiàn)下面這種聲明!
Dim nCount As Integer, bAnswer As Boolean
聲明變量時(shí)可賦予初始值 Dim nCount As Integer = 20
Dim nDoubleCount as Integer = nCount * 2
允許為數(shù)組元素指定初始值 Dim nIndex(3) As Integer = (3, 5, 7)
不能用Redim進(jìn)行聲明,只能用Redim重新定義數(shù)組大小。 '下面這行代碼在VB.NET中不合法!
Redim sName() As String
大量新關(guān)鍵詞實(shí)現(xiàn)了VB.NET中的新功能。下面是一些最重要的關(guān)鍵詞及其用途、用法簡例。
表E:VB.NET的新關(guān)鍵詞
關(guān)鍵詞 用途 簡單例子
Inherits 指向基類,用于實(shí)現(xiàn)繼承。 Inherits System.WinForms.Form
MyBase 在子類的代碼中,MyBase引用基類。 StringProperty = MyBase.StringProperty
Shared Shared表示類的所有實(shí)例共享類里面的變量。 Public Shared BaseLocation As String
Try
Catch
Finally
Throw 這是新的錯(cuò)誤處理關(guān)鍵詞。Try開始一個(gè)啟用錯(cuò)誤控制的代碼塊,Catch標(biāo)識一個(gè)對特定錯(cuò)誤進(jìn)行處理的代碼塊,F(xiàn)inally開始一個(gè)不管錯(cuò)誤是否出現(xiàn)都必須執(zhí)行的代碼塊,Throw拋出一個(gè)錯(cuò)誤(類似于VB6的Err.Raise)。 Try
rsRecordset.Update
Catch
LogError ("更新失敗!")
Finally
rsRecordset.MoveNext
End Try
ReadOnly 在屬性聲明中,ReadOnly指示一個(gè)只讀的屬性(只有Get過程的屬性)。 Public ReadOnly Property
StringProperty() As String
WriteOnly 在屬性聲明中,WriteOnly指示一個(gè)只能寫入的屬性(只有Set過程的屬性)。 Public WriteOnly Property
StringProperty() As String
Char 這是VB.NET中的單字符數(shù)據(jù)類型。 Dim chrInitial As Char
Imports 在當(dāng)前代碼模塊中引入指定類。 Imports System.WinForms
Namespace 為模塊指定名稱空間(Namespace)。 Namespace MyApplicationName
Overloads 重載。Overloads表示同一個(gè)函數(shù)名字有多個(gè)版本的實(shí)現(xiàn),編譯器通過函數(shù)的參數(shù)列表區(qū)分它們。 '同一個(gè)模塊之內(nèi)包含如下多個(gè)聲明...
Overloads Sub Display(sIn as String)
Overloads Sub Display(nIn as Long)
Overrides 覆蓋。Overrides表示成員函數(shù)覆蓋當(dāng)前類所繼承的基類中的指定方法。 Inherits MyBaseClass
Overrides Function Name(nID as Long) _
As String
Overridable Overridable表示任意從當(dāng)前類繼承的類都可以覆蓋指定成員函數(shù)。 Overridable Function Name _
2015年全國職稱計(jì)算機(jī)考試教材(2007模 .. 定價(jià):¥225 優(yōu)惠價(jià):¥213 更多書籍 | |
全國職稱計(jì)算機(jī)考試速成過關(guān)系列套裝:W .. 定價(jià):¥133 優(yōu)惠價(jià):¥133.0 更多書籍 |