複製鏈接
請複製以下鏈接發送給好友

Visual Basic .NET

鎖定
Visual Basic.NET(VB .NET)是基於微軟.NET Framework之上的面向對象的編程語言 [1]  VB .NET是微軟在2002年開發的一種簡單、高級、面向對象的編程語言。它是Visual Basic 6.0的繼承者,是在Microsoft .NET框架上實現的,支持面向對象的概念,如抽象、封裝、繼承和多態性。因此,一切都在VB中進行。 [3] 
軟件名稱
Visual Basic .NET
軟件平台
.NET
上線時間
2002年
最近更新時間
2022年9月22日 [4] 
軟件語言
Visual Basic
開發商
Microsoft
軟件授權
Microsoft
軟件版本
16.9 [4] 

Visual Basic .NET產生背景

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發展歷程

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
Visual Studio 2010於2010年4月12日上市,其中包含 Visual Basic .NET 2010 。Visual Studio是微軟公司推出的開發環境,是最流行的Windows平台應用程序開發環境。Visual Studio 2010集成開發環境(IDE)的界面被重新設計和組織,變得更加簡單明瞭。Visual Studio 2010同時帶來了 NET Framework 4.0、Microsoft Visual Studio 2010 CTP( Community Technology Preview--CTP),並且支持開發面向Windows 7的應用程序。除了Microsoft SQL Server,它還支持 IBM DB2Oracle數據庫等。
從該版本開始VB.NET已沒有單獨發售的IDE了,微軟給Visual Basic .NET 以及C#開發者的IDE就只有Visual Studio 了。該版本增加了modern(原metro)風格的支持等眾多新特性。
增加了大量新特性,提升編寫效率。對編譯器和開發環境優化,提高編譯速度,重構代碼和解決錯誤。最明顯的14項改進見參考資料的14 Top Improvements in Visual Basic 14。

Visual Basic .NET主要功能

Visual Basic .NET的應用範圍包括Windows桌面、Web等。由於改動太大,導致VB.NET對VB的向後兼容性不好,在業界引起不小的爭議。VB.NET是"...中間解釋性語言“,這種説法極不準確,甚至完全錯誤。可能原編輯者是指的編譯器會先將源碼翻譯成MSIL(Microsoft Intermediate Language)中間語言這回事,但這和”解釋性語言“有很大差別。

Visual Basic .NET運行環境

.NET語言,包括VB.NET,它們所開發的程序源代碼並不是直接編譯成能夠直接在操作系統上執行的二進制本地代碼,而是被編譯成為中間代碼,然後通過.NET Framework的通用語言運行時CLR)——執行。 所有的.Net編程語言都被編譯成這種被稱為MSIL(Microsoft Intermediate Language )的中間代碼,這與Java字節碼類似。因此雖然最終的程序在表面上仍然與傳統意義上的可執行文件都具有“.exe”的後綴名。但是實際上,如果計算機上沒有安裝.Net Framework,那麼這些程序將不能夠被執行。在程序執行時,.Net Framework將中間代碼翻譯成為二進制機器碼,從而使它得到正確的運行。最終的二進制代碼被存儲在一個緩衝區中。所以一旦程序使用了相同的代碼,那麼將會調用緩衝區中的版本。這樣如果一個.Net程序第二次被運行,那麼這種翻譯不需要進行第二次,速度會明顯加快。
VB.NET代碼之所以不直接編譯成二進制機器碼,是基於.NET跨平台這一目標的考慮。

Visual Basic .NET語言特點

Visual Basic .NET關鍵詞

關鍵字
描述
Namespace
包含類似或相關功能的類的集合
Class
用來定義一個類用以存儲對象的屬性、方法和事件
Sub
子過程,可以把要使用的數據以參數形式傳入,但不返回值
Function
函數,同樣可以傳參數,但要求有返回值
Property
屬性過程,設置或返回對象的屬性值
Return
結束當前sub或function,若是函數則返回一個函數值
Dim
聲明或定義一個變量
New
創建一個新的實例對象
Nothing
表示一個變量沒有值,與其他語言或數據庫中的null等價
Me
當前類的實例對象的引用
Console
.NET用於訪問和操作命令窗口的類,主要用於命令行應用程序
Module
模塊,定義一個不是類的代碼塊,但它同樣可以包含變量和方法

Visual Basic .NET數據類型

  • 數值型:整型(Short、Integer、Long和無符號的Byte)、非整型(Decimal 、Single、Double) [2] 
  • 字符型:Char、String
  • 泛型:List(Of T)、Dictionary(Of K,V)
  • 其他類型:Boolean、Date、Object、Enum、Array、ArrayList、Structure

Visual Basic .NET運算符

  • 算術運算符:/(除),\(整除),Mod(取模)
  • 串聯運算符:&,+亦可
  • 邏輯/按位運算符:Not、And、Or、Xor、AndAlso、OrElse
  • 賦值運算符:= ,^= ,*= ,/= ,\= ,+= ,-= ,=,&=
  • 比較運算符:< , ,>= ,= , ,Is ,IsNot ,Like
  • 其他運算符:AddressOf 運算符 ,GetType 運算符 ,函數表達式,If 運算符 ,TypeOf 運算符,Await 運算符
  • DirectCast 運算符
  • TryCast 運算符
  • New 運算符
*運算優先級:算術>連接>比較>邏輯運算(用括號可改變優先級)
詳細:
如果表達式中出現幾種運算,將按照預先確定的稱為“運算符優先級”的順序計算和解析各個部分。
當表達式包含不止一種運算符時,則按照下列規則對其進行計算:
  • 算術運算符和串聯運算符的優先級在下面列出,它們的優先級均高於比較運算符、邏輯運算符和位運算符。
  • 所有比較運算符具有相同的優先級,它們的優先級均高於邏輯運算符和位運算符,但低於算術運算符和串聯運算符。
  • 邏輯運算符和位運算符的優先級在下面列出,它們的優先級均低於算術運算符、串聯運算符和比較運算符。
  • 具有相同優先順序的運算符將按照它們在表達式中出現的順序從左至右進行計算。
優先級順序
運算符的計算優先級順序如下:
算術運算符和串聯運算符
求冪 (^)
一元標識和非(+、–)
乘法和浮點除法(*、/)
整數除法 (\)
取模 (Mod)
加法和減法(+、–),字符串連接 (+)
字符串連接 (&)
所有比較運算符(=、、=、Is、IsNot、Like、TypeOf...Is)
非 (Not)
與 (And、AndAlso)
或 (Or、OrElse)
異或 (Xor)
註釋
= 運算符只是相等比較運算符,而不是賦值運算符
字符串連接運算符 (&) 不是算術運算符,但它在優先級方面與算術運算符屬於一組。
Is 和 IsNot 運算符是對象引用比較運算符。 它們不比較兩個對象的值,只確定兩個對象變量是否指向相同的對象實例。
當具有相同優先級的運算符(例如乘法和除法)在表達式中一起出現時,編譯器將按每個運算符出現的順序從左至右進行計算。
Visual Basic 中的運算符具有“左結合性”。
重寫優先級和結合性
可以使用括號強制表達式中的某些部分先於其他部分計算。 這會重寫優先級順序和左結合性。 Visual Basic 始終先執行括在中括號內的操作,再執行括號外的操作。然而,在括號內,它保持普通優先級和結合性,除非括號內再使用括號。

Visual Basic .NET流程控制

  • 條件: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系統常量

Visual Basic .Net有很多系統常量,它們都在Microsoft.VisualBasic.Constants命名空間下,這些常量包括很多方面,如表示回車換行符vbCrLf、表示邏輯結果的vbOK以及用在時間方面的vbShortDate等等。

Visual Basic .NET對象關鍵詞

Visual Basic .Net已經是一門完全面向對象的語言,以下是關於面向對象的一些關鍵詞:
Inherits
Overloads
Shadows
隱藏覆蓋
Overrides
Interface
聲明接口
Implements
實現接口
還有一些與上面對應的如可重載、必須繼承等等在這裏就沒必要一一列出了。

Visual Basic .NET表達式

在Visual Basic .Net使用 Function 或 Sub 關鍵字創建 Lambda 表達式,就像創建標準函數子例程一樣。 但是,Lambda 表達式包括在語句中。下面分別演示單行與多行。
用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)
比起其他語言,Visual Basic .Net用Function和Sub更能直觀體現Lambda表達式的本質——匿名方法
參考資料