淺析VB.NET語言到底帶來了什么
VB.NET語言經過長時間的發展,很多用戶都很了解VB.NET語言了,這里我發表一下個人理解,和大家討論討論。
VB.NET語言到底給我們帶來了什么
微軟公司推出的.NET 平臺完全改變了VB的編程世界。.NET 戰略邁出的首要一步就是發布了最新的軟件開發包: Visual Studio.NET。開發團體對新一門編程語言C# 議論紛紛,但在這紛繁的變化之中人們卻忽略了一個更為重要的新聞:VB發生了顛覆性的重大變化,這就是本文要探討的宗旨,我們要引領讀者領略一下VB.NET語言到底給我們帶來了什么。
.NET世界內的每一種編程語言都必須和CLR(公共語言運行時:Common Language Runtime)打交道。你完全可以把這個新事物看成類似以往必須分派的VB運行時,當然,和老家伙相比,新玩意兒的規模更大,有些很酷的小東西也取消了。為了應付公共語言運行時, VB也必須隨之有所改變,最重要的就是支持真正的面向對象編程。是的,你早就經常用VB處理各種對象了,某些VB開發人員甚至反復地在IDE內“實現”面向對象的VB程序,但是, VB6確實沒有達到支持面向對象語言所應該達到的合理程度。
這可不是說VB開發人員就不知道面向對象的好。但是從某種意義上說,VB程序員因為VB所限多少懸在了面向對象和傳統編程的半空中。結果呢,大多數VB程序員不過是典型的過程編程的實踐者,對面向對象技術,比如COM可以說很少體驗。這一事實令微軟公司必須面臨抉擇:程序員的思想共享可是技術領域最有價值的無形資產啊!最激進的變革無非是讓.NET把 VB扔到一邊,讓競爭對手如Java之類緊緊俘獲程序員的心靈。好在茫然之際曙光初現:VB.NET來了。
語法和VB.NET語言變了樣
學習編程語言的語法通常比學習圍繞這一語言的技術行話要容易得多。超出編程語言的領域再看,這一事實對Web編程和面向對象等更為大型的軟件工程也同樣有效。在向面向對象技術進軍途中最令人畏懼的任務就是理解一大堆陌生的面向對象術語,比如繼承和重載等等。這些術語(比如類)往往具有不同的含義。
類
類是面向對象技術的核心概念。當然,目前的VB語言也支持類技術,但是,對VB.NET而言情況就完全不同了。對初學者來說,類開始和終止于某個代碼塊而非一個具體的文件。Public Class MyClass….End Class定義了一個類;這樣只在一個文件里就可以定義多個類。其次,你再也不能對類進行“SET”操作;實際上,你干脆把關鍵詞SET忘了吧!對屬性的讀取和賦值也取消了;它們都用一種更為智能的語法代替了。最重要的是,你必須把自己定義的類設想為物理實體的虛擬代表。CLR在對象分配時表現如此之好動作如此之快以至于創建對象的代價幾乎為0。在VB編程中,開發人員創建一個很棒的對象往往勉為其難,這可是個很大的缺陷,原因就在于整個過程拖拉的可以,現在這些問題都被解決了。
重載
開發人員經常為滿足特定需要而編寫一塊代碼。隨著開發工作的繼續,這段代碼往往會逐漸包括越來越多的功能。這種代碼膨脹現象有時會讓處理參數的數目多得驚人。到這個地步,你就必須增加相當可觀的邏輯針對這些傳遞過來的參數做出執行決策,否則你就可能不得不創建更多的函數而它們要做的事情卻幾乎差不多。這種情況存在大量的問題,這些令人頭痛的問題正好可以通過方法重載技術來
解決。
方法重載技術可以讓程序員編寫多個名字一樣的方法,但這些方法的傳遞參數卻不同。在方法被調用的時候,參數列表會被自動計算然后調用正確的方法。在這種情況下,你就不必編寫任何判斷邏輯來處理需要執行的程序代碼了。
構造
當類被創建或者破壞時需要調用某些特殊的函數。你可能在VB6中已經熟悉這些函數了,在VB6中它們就是Class_Initialize和 Class_Terminate程序。在這些程序中增加邏輯也是可能的,而增加參數則絕不被允許。在創建類的時候有條件準備的資源還不可用。而在 VB.NET環境下,這些公共方法,也就是類構造器和破壞器,其處理能力被大大擴展了。最有用的變化就是可以在New方法中增加參數,而后者正是代替 Class_Initialize的方法。這一特性被稱作“參數化構造器”,可以令類的內部資源分配效率更高。你可以用這種技術重載New方法而獲得令人難以置信的靈活性。
【編輯推薦】