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