Visual Basic(VB)概述
發展歷史
1991年,微軟公司推出了Visual Basic 1.0版。這在當時引起了很大的轟動。這個連線程式語言和用戶界面的進步被稱為Tripod(有些時候叫做Ruby),最初的設計是由阿蘭·庫珀(Alan Cooper)完成的。許多專家把VB的出現當做是軟體開發史上的一個具有劃時代意義的事件。其實,以我們現在的目光來看,VB1.0的功能實在是太弱了;(不過最近VB6.0, 的功能相當大!)。但在當時,它是第一個“可視”的編程軟體。這使得程式設計師欣喜之極,都嘗試在VB的平台上進行軟體創作。微軟也不失時機地在四年內接連推出VB2.0,VB3.0,4.0三個版本。並且從VB3開始,微軟將ACCESS的資料庫驅動集成到了VB中,這使得VB的資料庫編程能力大大提高。從VB4開始,VB也引入了面向對象的程式設計思想。VB功能強大,學習簡單。而且,VB還引入了“控制項”的概念,使得大量已經編好的VB程式可以被我們直接拿來使用。VB1.0的DOS版本VB1.0於1991年發布。這個連線程式語言和用戶界面的進步被稱為Tripod(有些時候叫做Ruby),最初的設計是由阿蘭·庫珀(Alan Cooper)完成的
2002年Visual Basic .NET 2002 (v7.0)問世,2003年Visual Basic .NET 2003 (v7.1)問世,2005年11月7日Visual Basic 2005 (v8.0)問世,同時間推出Visual Basic 2005的免費簡化版本Visual Basic 2005 Express Edition給Visual Basic初學者及學生使用。
VB 2005的“顯著”優點是,可以直接編寫出XP風格的按鈕,以及其他的控制項。但是其編寫的小程式占用近10MB的記憶體。
通過幾年的發展,它已成為一種專業化的開發語言和環境。用戶可用Visual Basic快速創建Windows程式,現在還可以編寫企業水平的客戶端/伺服器程式及強大的資料庫應用程式。
VB會吸引更多的讚譽和批評,也會繼續為廣大的用戶和程式設計師使用。它非常適合用來開發擁有友好界面的程式(比如針對終端的數據),但是不適合開發其它程式(比如聯合計算程式)。
現在還有某一些VB軟體的精簡版,比如VB6的精簡版。
語言特性
一個典型的VB進程VB的中心思想就是要便於程式設計師使用,無論是新手或者專家。VB使用了可以簡單建立應用程式的GUI系統,但是又可以開發相當複雜的程式。VB的程式是一種基於窗體的可視化組件安排的聯合,並且增加代碼來指定組建的屬性和方法。因為默認的屬性和方法已經有一部分定義在了組件內,所以程式設計師不用寫多少代碼就可以完成一個簡單的程式。過去的版本裡面VB程式的性能問題一直被放在了桌面上,但是隨著計算機速度的飛速增加,關於性能的爭論已經越來越少。
窗體控制項的增加和改變可以用拖放技術實現。一個排列滿控制項的工具箱用來顯示可用控制項(比如文本框或者按鈕)。每個控制項都有自己的屬性和事件。默認的屬性值會在控制項創建的時候提供,但是程式設計師也可以進行更改。很多的屬性值可以在運行時候隨著用戶的動作和修改進行改動,這樣就形成了一個動態的程式。舉個例子來說:窗體的大小改變事件中加入了可以改變控制項位置的代碼,在運行時候每當用戶更改視窗大小,控制項也會隨之改變位置。在文本框中的文字改變事件中加入相應的代碼,程式就能夠在文字輸入的時候自動翻譯或者阻止某些字元的輸入。
VB的程式可以包含一個或多個窗體,或者是一個主窗體和多個子窗體,類似於作業系統的樣子。有很少功能的對話框視窗(比如沒有最大化和最小化按鈕的窗體)可以用來提供彈出功能。
VB的組件既可以擁有用戶界面,也可以沒有。這樣一來伺服器端程式就可以處理增加的模組。
VB使用參數計算的方法來進行垃圾收集,這個方法中包含有大量的對象,提供基本的面向對象支持。因為越來越多組建的出現,程式設計師可以選用自己需要的擴展庫。和有些語言不一樣,VB對大小寫不敏感,但是能自動轉換關鍵字到標準的大小寫狀態,以及強制使得符號表入口的實體的變數名稱遵循書寫規則。默認情況下字元串的比較是對大小寫敏感的,但是可以關閉這個功能。
VB使得大量的外界控制項有了自己的生存空間。大量的第三方控制項針對VB提供。VB也提供了建立、使用和重用這些控制項的方法,但是由於語言問題,從一個應用程式創建另外一個並不簡單。
術語
在討論Visual Basic時,經常可以聽到以下這些術語,因此對這些術語的基本理解十分有幫助。
控制項——簡單的說,控制項就是構成或者說建造Visual Basic應用程式的圖形化工具,包括窗體、按鈕、複選框、列表框、數據控制項、表格控制項和圖片控制項等等...。
事件——由用戶或作業系統引發的動作。事件的示例有擊鍵、單擊滑鼠(Click)、雙擊滑鼠(DblClick)、一段時間的限制,或從連線埠接收數據。
方法——嵌入在對象定義中的程式代碼,它定義對象怎樣處理信息並回響某事件。例如,資料庫對象有打開紀錄集並從一個記錄移動到另一個記錄的方法程式的基本元素,它含有定義其特徵的屬性,定義其任務和識別它可以回響的事件的方法。控制項和窗體是Visual Basic中所有對象的示例。
對象——一個控制項、窗體等都可被看作一個對象。
過程——為完成某些特定的任務而編寫的代碼段,過程通常用於回響特定的事件,也可以當作應用程式的用戶自定義函式來使用。
屬性——屬性是組成用戶界面的各對象的性質的具體描述。例如上述“對象”中所提到的尺寸、位置、顏色、寬度、高度等等都稱為控制項的 屬性。屬性決定對象的外觀,有時也決定對象的行為。對象的屬性絕大部分是VB中已經事先定義好的,但也有的屬性是需要在套用 過程中才去定義的。屬性即可為對象提供數據,也能從對象取回信息。
VB的局限性
繼承。VB5和VB6都是面向對象的程式語言,但是不包含繼承特性。VB中提供了特殊的類的功能,但是還是不能滿足程式設計師的需求。 包含了所有面向對象的特性。
多執行緒支持 (2002以及之後的版本,都支持多執行緒技術。)
異常處理。中使用了Try-Catch-Finally來處理異常。而VB中只有"On Error Goto line"語句。
對指針的支持非常有限。
VB只能支持8到32位的整形,很多語言都有無限制的支持。
VB不允許在任何數組記憶體在不變的變數。
VB不支持以上特性,程式設計師需要自己建構方法來實現相似的功能。
爭議
反對觀點:
VB是一種充滿了爭議的語言:很多程式設計師對VB程式的質量有強烈的感受。很多人認為VB不配他們使用,認為它是一種給兒童和菜鳥程式設計師的語言。它自從設計開始就是一種簡單的語言。一些C++和Java中的特性在VB中並沒有出現。在感受開發的方便和快速的同時,一些類似於編譯時進行類型和聲明檢查的功能在默認情況下是關閉的。這樣一些程式設計師一邊感嘆VB的易用性,一般沮喪地地看著一些類似於“未定義類型”錯誤的發生。
一些批評家認為VB的簡單特性使得其在未來具有傷害性。很多人自學了VB,但是並沒有學到好的編程習慣。當VB進入課堂的時候,學生們不會學到很多基礎的程式技術和結構,因為很多技術已經包含在那些對用戶可見的組件裡面了。不用學習標準的編程習慣,因為VB具有可視化的特性,所以導致了一些莫名其妙的代碼的產生。而且很多錯誤和警告的檢查默認情況下都是關閉的,程式設計師很難找到隱藏的錯誤。有經驗的程式設計師在用VB編程的時候都會把這些選項打開。
很多批評家批評微軟簡單地拷貝了BASIC的思想到VB中。著名的計算機科學家Edsger Dijkstra說過一句名言:“如果一個學生最早學過BASIC,那么幾乎不可能讓他學會優秀的編程:因為這些人已經放棄了涅槃的希望。”(Dijkstra對待Fortran、PL/1、COBOL和APL同樣也毫不留情。)
另外一個笑話是:“真正的程式設計師不用BASIC。12歲以下的孩子才用。”
並不是非常簡便,它開發的程式只能運行在Microsoft Windows中。
個頭太大了。Visual Studio要用好幾張盤才能裝下。VB程式在運行時候還需要一個1.4M大小的運行庫。
IDE中有錯誤。
VB不能很好的綜合Windows的基礎API,很多時候要使用低級運算的“小伎倆”來進行編程。而C語言的低級記憶體運算比VB的要簡單得多。
支持觀點:
但是很多VB的支持者解釋說VB的易用性就是它最大的優勢,可以讓經驗豐富的VB程式設計師或是剛剛懂得皮毛的人都能用自己的方式快速開發程式。而且VB的程式可以非常簡單的和資料庫連線。比如利用控制項可以綁定資料庫,這樣一來用VB寫出的程式就可以掌握資料庫的所有信息而不用寫一行代碼。
很多語言的特性比如GoSub、On Error和用變數名字的最後一個字元判斷聲明類型(比如字元串型str$)都是從VB中來的。VB的語法和絕大部分語言都不同,可能會讓新的程式設計師混淆。比如聲明“Dim a,b,c As Integer”聲明了c為整形變數,但是a、b都是Variant類型的。 {這兒我說明一下,如果想申明3個Integer,必須寫 Dim a as Integer, b As Integer, c as Integer;而直接寫Dim a,後面不寫類型,則自動變成Variant類型——占用大量資源。} 還有一些特性,比如下劃線字元“_”用於一行代碼分多行寫時候。一些程式設計師在使用的時候由於不規範使得便引起報錯。
發展時間線
1991年4月,Visual Basic 1.0 Windows版本發布
1992年9月,Visual Basic 1.0 DOS版本發布。
1992年11月,VB2.0發布。它對於上一個版本的界面和速度都有所改善。
1993年夏天,VB3.0發布,分為標準版和專業版。其中包含一個數據引擎,可以直接讀取Access資料庫。
1995年8月,VB4.0發布了32位版本和16位的版本。其中包含了對類的支持。
1997年2月,VB5.0發布。程式設計師可以用32位的版本導入由4.0版本創建的16位程式,並且能順利編譯。同時還包含了對用戶自建控制項的支持。
1998年夏天,VB6.0發布。
2001年,Visual Basic.net和.NET Framework發布。由於其使用了新的核心和特性,所以很多VB的程式設計師都要改寫程式。
2003年,Visual Basic.net 2003和.NET Framework 1.1發布。
2004年,微軟開放了Visual Studio 2005的測試版本(代號Whidbey)。包含了.NET Framework2.0的測試版本。
2005年,微軟宣布將不會再對非.NET版本的VB進行支持。VB社群立即作出反應表示關心這個訊息,一些老用戶還遞交了希望能夠繼續對VB進行技術支持的請願書。微軟目前還不願意改變他們的決定。
由VB派生的語言
微軟開發了一系列有關VB的腳本語言:
Visual Basic for Applications,即VBA,包含在微軟的應用程式中(比如Microsoft Office),以及類似WordPerfect Office這樣第三方的產品裡面。VBA這樣嵌入在各種應用程式中看起來有些矛盾,但是它的功能和VB一樣強大。
VBScript是默認的ASP語言,還可以用在Windows腳本編寫和網頁編碼中。儘管它的語法類似於VB,但是它卻是一種完全不同的語言。VBS不使用VB運行庫運行,而是由Windows腳本主機解釋執行。這兩種語言之中的不同點影響ASP網站的表現。
當微軟準備開發一種新的編程工具的時候,第一決定就是利用最搶手的VB6來進行舊改,或者就是重新組建工程開發新工具。微軟後來開發了VB的繼任者Visual Basic .NET,同時也是.NET平台的一部分。VB.net程式語言是一種真正的面向對象程式語言,和VB並不完全兼容。
關於VB.NET
Visual Studio.net 2005已經在2005年11月7日發布。
Visual Basic.NET(簡稱VB.NET)是新一代的VB。它不是VB 6.0的簡單升級,VB.NET與VB之間有非常大的區別。其新特性主要表現在以下幾方面:
1.VB.NET完全集成到Visual Studio集成開發環境中,在這種集成開發環境與VB在若干方面有差異。主要體現在窗體的布局以及選單等方面都有所不同。
2.VB.NET項目與VB不同。它使用基於資料夾的模型,所有項目均放置在項目資料夾層次結構中。
3.VB.NET中使用ADO.NET來訪問資料庫,ADO.NET是.NET框架的一部分。在VB.NET中實現數據訪問的方法重要有兩種:其一是在程式設計階段,通過創建、配置數據適配器DataAdapter和生成數據集DataSet;其二是在運行中,通過編程方式動態創建配置數據適配器和創建、生成數據集。
4.在VB.NET中是使用ASP.NET技術來編寫Web頁面的。在ASP.NET中使用的也不是腳本語言,而是真正意義的程式語言。憑藉ASP.NET的Web應用程式、XML Web Services等基於Web的功能,使得VB.NET開發Web頁面與開發Windows應用程式很相似,Web頁面代碼也顯得有條有理了。
5. VB.NET已經成為完全的面向對象的程式語言。
Visual Basic 2005 的更新情況
Microsoft Visual Basic 2005 從 Visual Basic 語言演變而來,是一種為高效地生成類型安全和面向對象的應用程式而設計的語言。Visual Basic 允許開發人員開發面向 Windows、Web 和移動設備的程式。與所有面向 Microsoft .NET Framework 的語言一樣,使用 Visual Basic 編寫的程式都具有安全性和語言互操作性方面的優點。
這一代 Visual Basic 延續了為您提供一種簡單快捷的方法來創建基於 .NET Framework 的應用程式的傳統。
此版本的 Visual Basic 恢復了對“編輯並繼續”的支持,並具有可快速開發應用程式的新功能。其中一種稱為 My 的功能提供了對以下內容的快速訪問:由 .NET Framework 提供的常見任務,與應用程式及其運行時環境相關的信息和默認對象實例。新的語言功能包括循環繼續、有保證的資源處置、運算符重載、泛型類型和自定義事件。Visual Basic 與 .NET Framework 和公共語言運行庫 (CLR) 完全集成,它們提供了語言互操作、垃圾回收、增強的安全性和版本管理支持。
Visual Basic 編譯器和語言
Visual Basic 2005 中的語言改進簡化了原始碼,並且啟用了與使用高級功能的組件的互動。
使用 My 進行 Visual Basic 開發
Visual Basic 2005 提供了用於快速應用程式開發的新功能,旨在於提供強大功能的同時提高效率並簡化使用。其中一種稱為 My 的功能提供了對由 .NET Framework 所提供的常用功能的訪問,還提供了對與應用程式及其運行時環境關聯的信息和默認對象實例的訪問。這些信息按 IntelliSense 能夠識別的格式進行組織,並根據用途按邏輯進行描述。
開發應用程式
My.Application 對象提供對應用程式的訪問,允許您輕鬆地更新應用程式並從中記錄信息。My.Application 也可用於訪問應用程式的命令行參數,或在應用程式開始或結束時運行代碼。
剪貼簿
My.Computer.Clipboard 對象提供了更為容易的剪貼簿讀寫訪問,同時提供了用於清除剪貼簿和確定剪貼簿上存儲的數據類型的方法。
計算機資源
通過 My 對象可以訪問很多計算機資源,包括計算機的時鐘、鍵盤、滑鼠、連線埠和註冊表。
檔案輸入/輸出
My.Computer.FileSystem 對象提供可簡化檔案 I/O 的檔案訪問方法和屬性。使用 TextFieldParser 對象可以分析大型分隔的或固定寬度的文本檔案,而像 WriteAllText、WriteAllBytes、ReadAllText 和 ReadAllBytes 這樣的方法在提高性能的同時使對檔案的讀取和寫入更加直觀。類似地,GetFileInfo、GetDirectoryInfo 和 GetDriveInfo 方法提供關於檔案、目錄和驅動器的信息。
網路操作
My.Computer.Network 對象提供方法和屬性,可用於上傳和下載檔案、檢查連線狀態和確定遠程計算機是否可用。
資源
使用 My.Resources 對象可以訪問像音頻資源、圖示資源和本地化資源這樣的資源。
可以使用“項目設計器”的“資源”頁來添加和管理資源。
用戶設定和應用程式設定
使用 My.Settings 對象可以保持和更改用戶設定以及讀取應用程式設定。有關更多信息,請參見訪問應用程式的設定。
也可以使用“項目設計器”的“設定”頁來管理應用程式設定。
數據訪問
Visual Basic 2005 包括多個用於輔助開發訪問數據的應用程式的新功能。數據源配置嚮導簡化了將應用程式連線到資料庫、Web 服務和用戶創建的對象中的數據的過程。
新的“數據源”視窗提供了一個用於查看項目可用數據及關聯數據的中心位置,並且允許您通過將項從視窗拖到窗體上來創建數據綁定控制項,從而降低了數據綁定的複雜性。
現在可以使用 Visual Studio 生成的新 TableAdapter 對象完成數據集的填充、查詢的運行和存儲過程的執行。使用新的本地數據功能可以在應用程式中直接包含 Microsoft Access 資料庫檔案和 Microsoft SQL Server Express 資料庫檔案。
設計時增強功能
1.編輯並繼續
使用“編輯並繼續”可以在應用程式在調試器下運行時對其進行更改,而不必停止和重新啟動應用程式。繼續執行應用程式時會立即套用在中斷模式中所做的更改。
2.“屬性”(Property) 視窗中的屬性 (Attribute) 編輯
現在可以在“屬性”(Property) 視窗中編輯套用到類和方法的公共屬性 (Attribute),而不必在代碼中套用它們。
3.IntelliSense 篩選
現在可以調整代碼編輯器中 IntelliSense 提供的詳細信息的級別。顯示 IntelliSense 視窗時,可以通過單擊“常用”選項卡篩選掉不太常用的成員,或通過單擊“全部”選項卡查看可用的所有內容。通過調整級別,可以在不需要不常用的或深奧難解的成員時將其輕鬆篩選出來,或在需要時包含它們。
4.區域 IntelliSense
“區域 IntelliSense”是一個 Visual Basic IntelliSense 功能,該功能以不同的顏色在語句結束列表中顯示不具有足夠的許可權來在指定的安全區域運行的某些項。使用此設計時支持可以更輕鬆地開發在部分信任的情況下運行的應用程式。
5.IntelliSense 代碼段
IntelliSense 代碼段庫由 380 個預編寫的代碼片段組成。可以向代碼添加這些可重用的例程並使用代碼包含的指針編輯它們。當在“代碼編輯器”中右擊然後單擊“插入代碼段”時代碼段可用。它們也可通過鍵盤快捷鍵使用。
代碼段任務的範圍包括創建自定義異常、傳送電子郵件訊息以及繪製圓形等任務。有些代碼段任務則是常用編程結構的簡單擴展。該庫是可擴展的;您可以創建符合業務需要的代碼任務並將其添加到庫中。還可以從第三方軟體供應商和 Visual Basic 社區站點下載更多庫任務。
6.錯誤糾正和警告
使用“智慧型編譯錯誤糾正”,代碼編輯器可對常見的錯誤和警告建議解決方案,並允許您選擇適當的糾正措施,然後對代碼套用糾正措施。當出現錯誤時,如果在波形曲線右下方有一個符號,那么,將滑鼠懸停在波形曲線上就可將該符號轉換為一個智慧型標記面板。單擊該智慧型標記面板可打開“錯誤糾正選項”幫助器視窗,此視窗提供錯誤說明、建議可能的修複方法,並且在適當的位置還允許您預覽修復結果。
7.異常助手
默認情況下,調試應用程式時會打開“異常助手”以輔助處理未處理的異常。如果您選擇該選項,則可以更改環境以便在代碼內發生任何異常時出現該助手。“異常助手”列出了異常的類型、特定於已引發的異常的訊息、疑難解答提示列表和可能套用的操作。
8.XML 文檔
使用 XML 代碼文檔可以將代碼中的類文檔化並將該文檔公開為 XML。得到的 XML 文檔可以用各種方法來使用和顯示,從而可以在編寫代碼時創建代碼的文檔。
9.“文檔大綱”視窗
除了 ASP.NET 網頁和 HTML 頁,“文檔大綱”視窗現在還支持 Windows 窗體的大綱視圖。在編輯器的“設計”視圖中,可以使用“文檔大綱”視窗來在 Windows 窗體上的控制項之間進行導航。若要訪問此視窗,請在“視圖”選單上單擊“其他視窗”,然後單擊“文檔大綱”。
用於管理項目、設定和資源的項目設計器
在“項目設計器”中可集中管理項目的屬性、設定和資源。它可以使用“項目”選單上的“屬性”命令訪問。
設定設計器
使用“項目設計器”的“設定”頁可指定項目的應用程式設定,此設定可以是用戶範圍的或應用程式範圍的。此功能替換動態屬性。
資源設計器
“資源設計器”是一種用戶接口工具,可用來管理項目使用的資源(例如,字元串、圖像、圖示、音頻和檔案)。它使用 My.Resources 對象創建您在運行時可以訪問的強類型資源。有關通過 My.Resources 對象訪問資源的信息,請參見訪問應用程式資源。
“項目設計器”的“資源”頁承載“資源設計器”的實例,用於在單一位置 (Resources.resx) 存儲和維護資源。
ClickOnce 部署
使用 ClickOnce 部署可以發布能像 Web 應用程式一樣輕鬆地安裝、更新和運行的、自行更新的 Windows 應用程式和控制台應用程式。
使用“項目設計器”上新的“安全”、“簽名”和“發布”選項卡可以自定義 ClickOnce 部署。使用“生成”選單上新的“發布”命令(或“解決方案資源管理器”中的快捷選單)來打開“發布嚮導”(一個分步指導您完成應用程式發布的工具)。
64 位應用程式部署
ClickOnce 和 Windows Installer 部署都支持在 64 位平台上安裝。
擴展示例
Visual Basic 2005 附帶超過 60 個示例應用程式。涵蓋的新功能包括: