產生背景
1991年4月,Visual Basic誕生,Visual Basic 1.0 Windows版本發布。這個連線
程式語言和用戶界面的進步被稱為Tripod(有些時候叫做
Ruby),最初的設計是由
阿蘭·庫珀(Alan Cooper)完成的。 1992年9月,Visual Basic 1.0 DOS版本發布。
1998年夏天,VB6.0發布。
2001年,Visual Basic .NET和.NET Framework發布。Visual Basic .NET正式誕生。
2005年,微軟宣布將不會再對非.NET版本的VB進行支持。
2010年,Visual Basic .NET隨Visual Studio 2010發布,不再提供單獨的Visual Basic .NET IDE。
VB .NET是構建於.Net framework之上,同屬
Basic系列語言,又同為微軟所開發,語法上有一定的相似或沿襲是很正常的,但不能因此認為VB .NET是VB的升級版。
微軟為使VB開發者更容易轉到VB .NET,兼容一些
VB6函式和庫的用法,但是比不上.NET語言中自帶的可替換的函式和庫來得高效,所以應該儘量使用.NET下的新方法。微軟還提供了VB到VB .NET的自動
轉換器,雖幾經改進,但仍無法轉換全部代碼,幾乎所有非小型程式都需要人工修改以完成編譯。為了運行最佳化,大多程式需要大量工作去重構。
VB .NET丟掉了許多不再發行的VB6中使用的大量語言constructs和
用戶界面功能,並且對保留下來的東西也改變了語意。其實不應該再把VB和VB .NET做功能上的比較,因為它們除了有些語法相似外,可以說是完全不同的兩種語言。
Visual Basic .NET與VB都代表了Basic系列語言的編碼風格,Visual Basic .NET是這種編碼風格在.NET平台上的繼承,而不是同系列語言VB的沿襲。
發展歷程
Visual Basic .NET 2002
2002年
Visual Basic .NET 問世,此後Visual Basic 包含在
Visual Studio套裝中。該版本又被稱為
VB 7.0,是與C#一起在2002年發布的最初始的VB.net版本。C#是一門新設計.Net語言並且語法上和Java有一定的相似性,所以被大力宣傳為
微軟對付JAVA的王牌,受到媒體極力關注。然而VB.NET則相反被錯誤地認為僅僅是VB的一個升級(故有時被稱為VB7),它的受
關注度也因此較低,當然VB社區以及喜歡Basic系列風格的語言的人還是很關注它的。那些試用過此版VB.NET的人在層層幕布下發現一個強大卻艱深的語言。不過任何一種語言都是有弱點的,當然後面這一點也是.NET語言的共性,那就是運行的計算機上必須裝相應版本的.Net framework。
Visual Basic .NET 2003
該版本是和.NET Framework 1.1一起發布的。新功能包括對.NET Compact Framework的支持和更好的VB升遷嚮導。並改進了運行狀況,
IDE穩定性(尤其是後台
編譯器),以及運行時RunTime穩定性。另外,VB.NET2003還有一個學院版Visual Studio .NET 2003 Academic Edition (VS03AE),它是分發給各國某些學者免費使用的版本。
Visual Basic .NET 2005
該版本是VB.Net的
重大轉變。但是這個版本的 Visual Studio 仍然還是面向 .NET 框架的(版本2.0)。它同時也能開發
跨平台的
應用程式,如開發使用
微軟作業系統的手機的程式等。總體來說是一個非常龐大的軟體,甚至包含代碼測試功能。
Visual Basic .NET 2008
Visual Basic 2008於2008年2月1日發布。通過幾年的發展,它已成為一種專業化的開發語言和環境。用戶可用 Visual Basic 快速創建 Windows 程式,還可以編寫企業水平的
客戶/伺服器程式及強大的資料庫應用程式。
Visual Studio 2010
從該版本開始VB.NET已沒有單獨發售的IDE了,微軟給Visual Basic .NET 以及C#開發者的IDE就只有Visual Studio 了。該版本增加了modern(原
metro)風格的支持等眾多新特性。
增加了大量新特性,提升編寫效率。對編譯器和開發環境最佳化,提高編譯速度,重構代碼和解決錯誤。最明顯的14項改進見參考資料的14 Top Improvements in Visual Basic 14。
主要功能
Visual Basic .NET的
套用範圍包括Windows桌面、Web等。由於改動太大,導致VB.NET對VB的向後
兼容性不好,在業界引起不小的爭議。VB.NET是"...中間
解釋性語言“,這種說法極
不準確,甚至完全錯誤。可能原編輯者是指的編譯器會先將源碼翻譯成MSIL(Microsoft Intermediate Language)
中間語言這回事,但這和”解釋性語言“有很大差別。
運行環境
.NET語言,包括VB.NET,它們所開發的程式
原始碼並不是直接編譯成能夠直接在作業系統上執行的
二進制本地代碼,而是被編譯成為
中間代碼,然後通過
.NET Framework的通用語言
運行時(
CLR)——執行。 所有的.Net程式語言都被編譯成這種被稱為MSIL(Microsoft Intermediate Language )的中間代碼,這與
Java的
位元組碼類似。因此雖然最終的程式在表面上仍然與傳統意義上的
執行檔都具有“.exe”的
後綴名。但是實際上,如果計算機上沒有安裝.Net Framework,那么這些程式將不能夠被執行。在程式執行時,.Net Framework將中間代碼翻譯成為二進制
機器碼,從而使它得到正確的運行。最終的
二進制代碼被存儲在一個緩衝區中。所以一旦程式使用了相同的代碼,那么將會調用緩衝區中的版本。這樣如果一個.Net程式第二次被運行,那么這種翻譯不需要進行第二次,速度會明顯加快。
VB.NET代碼之所以不直接編譯成二進制機器碼,是基於.NET跨平台這一目標的考慮。
語言特點
關鍵字
| |
| |
| |
| 子過程,可以把要使用的數據以參數形式傳入,但不返回值 |
| |
| |
| 結束當前sub或function,若是函式則返回一個函式值 |
| |
| |
| 表示一個變數沒有值,與其他語言或資料庫中的null等價 |
| |
| .NET用於訪問和操作命令視窗的類,主要用於命令行應用程式 |
| 模組,定義一個不是類的代碼塊,但它同樣可以包含變數和方法 |
數據類型
數值型:整型(Short、Integer、Long和無符號的Byte)、非整型(Decimal 、Single、Double)
字元型:Char、String
泛型:List(Of T)、Dictionary(Of K,V)
其他類型:Boolean、Date、Object、Enum、Array、ArrayList、Structure
運算符
*運算優先權:算術>連線>比較>
邏輯運算(用括弧可改變優先權)
詳細:
當表達式包含不止一種
運算符時,則按照下列規則對其進行計算:
所有比較運算符具有相同的優先權,它們的優先權均高於邏輯運算符和位運算符,但低於算術運算符和串聯運算符。
邏輯運算符和位運算符的優先權在下面列出,它們的優先權均低於算術運算符、串聯運算符和比較運算符。
具有相同優先順序的運算符將按照它們在表達式中出現的順序從左至右進行計算。
優先權順序
運算符的計算優先權順序如下:
求冪 (^)
一元標識和非(+、–)
整數除法 (\)
取模 (Mod)
字元串連線 (&)
所有
比較運算符(=、、=、Is、IsNot、Like、TypeOf...Is)
非 (Not)
與 (And、AndAlso)
或 (Or、OrElse)
注釋
字元串連線運算符 (&) 不是算術運算符,但它在優先權方面與算術運算符屬於一組。
Is 和 IsNot 運算符是
對象引用比較運算符。 它們不比較兩個對象的值,只確定兩個對象變數是否指向相同的對象實例。
當具有相同優先權的運算符(例如乘法和除法)在表達式中一起出現時,編譯器將按每個運算符出現的順序從左至右進行計算。
Visual Basic 中的運算符具有“左結合性”。
重寫優先權和結合性
可以使用括弧強制表達式中的某些部分先於其他部分計算。 這會重寫優先權順序和左結合性。 Visual Basic 始終先執行括在
中括弧內的操作,
再執行括弧外的操作。然而,在括弧內,它保持普通優先權和結合性,除非括弧內再使用括弧。
流程控制
條件:If、Select Case
循環:For、For Each、While、Do While… …Loop、Do …Loop Until…
終止:Exit [Do、For、Function、Property、Select、Sub、Try]
異常處理:Try...Catch...Finally 語法支持"結構化異常處理"。
*三元表達式:
IIf(Expression,TruePart,FalsePart),是Microsoft.VisualBasic命名空間下的函式,不論結果如何都會計算TruePart和FalsePart的表達式,它有相應的
返回值。
較高版本中存在 If(Expression,TruePart,FalsePart) 運算符,與IIf的區別是它能
短路計算,Expression為真時不計算FalsePart,Expression為假時不計算TruePart
系統常量
Visual Basic .Net有很多系統常量,它們都在Microsoft.VisualBasic.Constants命名空間下,這些常量包括很多方面,如表示回車
換行符的
vbCrLf、表示邏輯結果的vbOK以及用在時間方面的vbShortDate等等。
對象關鍵字
Visual Basic .Net已經是一門完全面向對象的語言,以下是關於面向對象的一些關鍵字:
還有一些與上面對應的如可重載、必須繼承等等在這裡就沒必要一一列出了。
表達式
用Function並返回值:
DimLambdaTest=Function(x)x+1
DimLambdaTest1=Function(x)
Returnx+2
EndFunction
MessageBox.Show(LambdaTest(7))
MessageBox.Show(LambdaTest1(7))
用Sub:
DimLambdaTest=Sub(x)MessageBox.Show(x)
DimLambdaTest1=Sub(x)
MessageBox.Show(x)
EndSub
LambdaTest(7)
LambdaTest1(7)