當前位置:成語大全網 - 書法字典 - VB.NET的基礎語法學習。

VB.NET的基礎語法學習。

長期以來,VB因缺乏完善的面向對象支持、高效的錯誤處理機制和較差的性能而受到壹些人的嘲諷。這種情況將被徹底改變。但是這些方面的提升也是有代價的,很多舊代碼需要手動轉換才能在環境中運行。

下表總結了該語言的語法變化。請註意,這些表格並沒有完全列出所有的變化,而是列出了壹些最重要的變化。

表A比較了VB6中壹些常見的語法形式和它們在VB6中功能相似的最接近的語法形式。

表A:與舊語法的語法對比新語法解釋了表單加載事件,類初始化事件Sub New procedure Sub New被稱為構造函數,可以有參數。

propertylet propertylet關鍵字不再有效。

貨幣小數在VB6中,小數是Variant的壹個子類型,但是在VB6中。NET中,它是壹種固有的數據類型。。NET不再支持貨幣數據類型。

Variant對象的對象數據類型兼具VB6對象類型和Variant類型的能力。

調試。打印調試。寫調試。writeline這個變化只是名字上的簡單變化:從print到write和WriteLine。建議使用While循環而不是Do循環。

為了使VB數據類型和其他。NET語言中,微軟修改了整數數據類型的表示,並添加了壹種新的數據類型。這些變化對於進行外部調用(比如API調用)的方法尤其重要。例如,如果被調用的函數需要壹個32位的整型參數,那麽在VB6中應該聲明為Long,在VB6中聲明為Integer。

表B:整數相關的數據類型長度VB6和名稱16位整數短32位長整數64位長在早期版本中。

在中,微軟減少了很多原本用於VB6的關鍵詞,代之以“框架類”。這種替換的原因是framework類中的函數對所有人都有效。網絡語言。下表列出了壹些受影響的關鍵字。

表c:替換的關鍵字

VB關鍵字命名空間中的定位方法/屬性

圈子制度。繪圖。圖形繪制橢圓

線系統。繪圖.圖形繪制線

Atn系統。數學阿坦

Sgn系統。數學符號

Sqr系統。數學Sqrt

Rnd微軟。visual basic . compatibility . VB6 Rnd

圓微軟。VisualBasic.Compatibility.VB6回合

Lset系統。字符串PadRight

Rset系統。字符串左對齊

DoEvents系統Winforms . Application DoEvents

VarType系統。Object GetType(返回壹個類類型的對象,包含可以從中提取信息的屬性)。

在中,變量和數組的聲明和初始化方法發生了變化,下表簡要列出了這方面的變化。

表d:新的申報方法

改變語法的例子

不能在單個聲明語句中聲明多個類型。不允許下列語句!

Dim nCount為整數,bAnswer為布爾值

該變量可以用Dim nCount的初始值聲明為Integer = 20。

dim nDoubleCount as Integer = nCount * 2

允許您將數組元素的初始值Dim nIndex(3)指定為Integer = (3,5,7)。

不能用Redim聲明,只能用Redim重定義數組大小。以下代碼行在中是非法的!

Redim sName()為字符串

大量的新關鍵字實現了中的新功能。以下是壹些最重要的關鍵字及其用法和用法示例。

表E:的新關鍵字

關鍵詞用法的簡單示例

Inherits指向基類,用於實現繼承。繼承系統。WinForms.Form

MyBase在子類的代碼裏,MyBase指的是基類。StringProperty = MyBase。字符串屬性

Shared Shared意味著* * *類的所有實例共享該類中的變量。字符串形式的公共共享基位置

嘗試

捕捉

最後

拋出,這是壹個新的錯誤處理關鍵字。Try啟動啟用錯誤控制的代碼塊,Catch標識處理特定錯誤的代碼塊,最後啟動無論錯誤是否發生都必須執行的代碼塊,Throw拋出錯誤(類似Err。VB6中加註)。嘗試

rsRecordset。更新

捕捉

LogError("更新失敗!")

最後

rsRecordset。下壹步

結束嘗試

ReadOnly在屬性聲明中,ReadOnly表示只讀屬性(僅指Get過程的屬性)。公共只讀屬性

StringProperty()作為字符串

WriteOnly在屬性聲明中,WriteOnly指示writeonly屬性(僅Set過程的屬性)。Public WriteOnly屬性

StringProperty()作為字符串

Char這是中的單字符數據類型。Dim chrInitial As Char

將指定的類引入當前代碼模塊。進口系統。WinForms

命名空間指定模塊的命名空間。命名空間MyApplicationName

超載超載。重載是指同壹個函數名有多個版本,編譯器通過函數的參數列表來區分。同壹個模塊包含以下聲明。...

過載子顯示(sIn為字符串)

過載子顯示(nIn為長)

覆蓋重寫意味著成員函數重寫由當前類繼承的基類中的指定方法。繼承MyBaseClass

覆蓋函數名(nID壹樣長)_

作為字符串

Overridable Overridable意味著從當前類繼承的任何類都可以重寫指定的成員函數。可覆蓋的函數名_

(與字符串壹樣長)

MustOverride MustOverride意味著從當前類繼承的任何類都必須重寫指定的成員函數。MustOverride函數名_

(與字符串壹樣長)

成員函數只能從當前類的派生類中訪問。受保護的接頭清除()

在之前的VB中,直到VB 4,Let,Set,Get屬性進程都是分開的。將同壹屬性的屬性過程放在壹起:

作為字符串的私有msMyStringProperty

申報區

字符串形式的公共屬性MyStringProperty

得到

MyStringProperty = msMyStringProperty

結束獲取

壹組

msMyStringProperty = MyStringProperty

結束集

結束屬性

不再有Let屬性過程,因為所有賦值語句(無論是對象還是非對象)的語法都是相同的。

語言的變化遠遠超過建築的變化。對於大多數人來說,這些變化是有意義的,但有些人仍然對壹些變化有異議。例如,在以前的版本中,許多任務可以通過許多不同的方式完成,統壹的編碼標準要麽不存在,要麽難以實現。為了“清理”VB語言,微軟對VB做了壹些重大的改變,很多以前有多個方法的任務現在只有壹個方法。

除了前面表格中列出的內容,以下是壹些需要特別註意的地方。

首先,流程參數默認的數據傳遞方式從原來的傳遞引用(ByRef)變成了傳遞值(ByVal),這是壹個非常重要的變化。通過引用傳遞參數比通過值傳遞參數更危險。危險在於被調用的進程可能會無意中更改參數值。仍然允許通過引用傳遞參數,但是默認參數傳遞的改變意味著程序必須做出相應的調整。

第二,在中不再有Set語句,現在給變量賦值對象引用只需要壹個等號,對象可以像其他任何值壹樣對待。雖然省略Set簡化了代碼,但它也有副作用:default屬性不再有效。例如,以下屬性值引用方法不再合法:

Text1 = "這是對象的默認屬性值。"

相反,必須顯式引用屬性值,如下所示:

Text1。Text = "這是對象的默認屬性值。"

從表面上看,似乎沒有必要提出這樣的要求。但實際上是要去掉默認屬性的。例如,假設有壹個名為objFoo的對象變量,由於沒有Set語句,如果屬性值仍然可以像以前壹樣被引用,就很難確定下面的語句是什麽意思:

objFoo = Text1

這條語句是設置了對Text1的引用,還是將Text1的文本屬性值賦給了objFoo?我們無法判斷,編譯器也無法判斷。因此,放棄Set語句意味著必須放棄默認屬性值。

。NET:微軟改變了壹些已經使用了很長時間的數據類型的含義。是的。NET,Integer變成32位,而Long是64位。可以想象,這種改變會導致程序員頻繁使用錯誤的變量類型。比如調用API函數時應該用16位整數還是32位整數?希望微軟能重新考慮這個決定,采用壹些新的變量類型名稱,比如Int32和Long64。

引入了Option Strict關鍵字。Option Strict關鍵字用於替換Option Explicit。最初的VB允許給字符串變量賦值壹個數值或者其他類似的異常賦值操作,Option Strict結束了這種情況。聲明Option Strict告訴Visual不要進行任何強制類型轉換。當然,自動類型轉換並不是完全受限的:它允許向下自動類型轉換(Cast),但不支持向上自動類型轉換。比如,如果不使用類似“sngvariable = CSng(dblvariable)”這樣的語句進行顯式類型轉換,那麽聲明為Single的變量就不能設置為Double變量的值,因為這樣可能會造成數據丟失;但是Double變量可以直接設置為單變量的值,不需要顯式進行類型轉換,因為這裏不存在數據丟失的問題。使用Option Strict可以幫助開發人員減少很多錯誤,包括很多難以調試的錯誤。註意:使用Option Strict時不允許延遲綁定。