Visual Basic.NET基本入門系列一
大家對(duì)VB.NET也許還不太了解,本文主要介紹VB.NET入門的基本知識(shí),希望對(duì)大家的學(xué)習(xí)和工作有所幫助。
微軟公司提出的.NET概念,正從各個(gè)方面滲入到我們的生活中。它將產(chǎn)生的作用,誠如一位業(yè)內(nèi)名家所描述的:“請(qǐng)忘掉你認(rèn)為你所知道的,.NET將改變一切”!既然如此,無論是IT業(yè)內(nèi)人士、還是企業(yè)決策者,快速領(lǐng)會(huì)這個(gè)新概念的含義及深遠(yuǎn)影響,都顯得非常必要。
VB.NET概要
VB正在不斷地發(fā)展中,它具備了以前VB編程人員作夢(mèng)都想擁有的性能,想象一下你將隨心所欲的利用這些性能,是不是很令人激動(dòng)?然而,這個(gè)計(jì)劃于2001年第四季度上市銷售的VB版本可能會(huì)給你帶來些小麻煩,因?yàn)橐耆莆账枰粋€(gè)較長的學(xué)習(xí)周期,而且其中包括了一些微妙的變化,你可能在使用他們的時(shí)候出現(xiàn)錯(cuò)誤。
需要準(zhǔn)備的條件:建議獲得Visual Basic.NET beta 版,這些內(nèi)容對(duì)所有VB程序員都是有用的。
Microsoft .NET平臺(tái)的涵蓋面很廣,而且很難預(yù)測它的真正意義。我們注意到,現(xiàn)在有很多關(guān)于.NET的不正確的理解。因此在這篇文章里,我們將把給你一個(gè)VB.NET到底是些什么的概念,從頭到尾說一說它是什么、它能干什么以及怎樣才能充分發(fā)揮它的優(yōu)點(diǎn)。我們要特別地細(xì)看一下IDE的改變、面向?qū)ο筇卣?、底層結(jié)構(gòu)的改變、一些“現(xiàn)代化”的語法以及包裝和分發(fā)方面的增強(qiáng)。我們將討論這些功能能為你做什么,解釋他們的優(yōu)點(diǎn)與不足。由于這些改變是如此之大,而且涉及方方面面,因此希望這一篇文章能滿足你全部的要求是不現(xiàn)實(shí)的,要了解這方面全部的知識(shí)請(qǐng)參閱有關(guān)文章和書籍。
Visual Basic.NET 和你現(xiàn)在所知的開發(fā)工具完全不同,并且這個(gè)新版本會(huì)改變你的未來。到底有多大不同?如果你覺得從VB3遷移到VB4是一個(gè)很大的變化,那這次VB.NET會(huì)讓你感到震驚。這次升級(jí)與其說是VB的一個(gè)新版本,還不如說是遷移到一個(gè)新平臺(tái)上,你所面臨的情況就和從DOS遷移到Windows差不多。
VB獲得了繼承能力
VB.NET預(yù)期擁有的第一新功能就是繼承能力。繼承是VB開發(fā)者長期以來要求得最多的功能。判斷一下對(duì)繼承的要求是不是像早些時(shí)候?qū)Ρ镜鼗幾g器的要求一樣將是一件很有意思的事,后者,當(dāng)Microsoft提供了一個(gè)以后,你就幾乎聽不到多少這方面的言語了。
Visual Basic現(xiàn)在是真正的面向?qū)ο笳Z言了。過去,你可以通過使用VB的界面繼承性創(chuàng)建偽實(shí)現(xiàn)的對(duì)象繼承,但現(xiàn)在不必這樣做了。
Visual Basic.NET 現(xiàn)在提供大量面向?qū)ο蠊δ埽☉?yīng)用程序繼承,它允許你從其它類導(dǎo)出你想創(chuàng)建的類。像在其它面向?qū)ο笳Z言里一樣,你能覆蓋基類的方法和屬性,并且能實(shí)現(xiàn)多態(tài)以創(chuàng)建健壯的、擴(kuò)展性好的組件。例如,假定你從基類 Crane里繼承產(chǎn)生了一個(gè)ForkLift類,你能使用像下面的代碼覆蓋基類里對(duì)Lift方法的默認(rèn)實(shí)現(xiàn):
- Public Class ForkLift
- Inherits Crane
- Overrides Sub Lift(ByRef _
- Height As Double)
- HeightHeight = Height + 10
- End Sub
- End Class
VB.NET不僅能讓你覆蓋方法或?qū)傩?;它還能讓你重載方法。重載是定義同名、但使用不同數(shù)據(jù)類型的方法或?qū)傩缘哪芰?。例如,假定你有一個(gè)組件能對(duì)不同數(shù)據(jù)類型的數(shù)組進(jìn)行排序,你不需要三個(gè)(每種數(shù)據(jù)類型一個(gè))不同名的方法;實(shí)際上你可以重載一個(gè)方法名:
- Overloads Sub SortArray(ByRef _
- aValues()As String)
- ...
- Overloads Sub SortArray(ByRef _
- aValues() As Integer)
- ...
- Overloads Sub SortArray(ByRef _
- aValues() As Object)
另一個(gè)改變是:表單現(xiàn)在是類模塊。這就是說類本身包含建立表單的所有“肥料”的代碼。你可能想知道,為什么你不得不看到這些從前不用看的代碼,但這個(gè)改變同時(shí)帶來強(qiáng)大的新功能,包括繼承這些表單的能力。Microsoft把這一技術(shù)稱為可視化繼承。假定你的對(duì)話框有一種標(biāo)準(zhǔn)的格式,例如在表單的一側(cè)有一行按鈕,并在角上有一個(gè)標(biāo)識(shí),那么,通過可視化繼承你能創(chuàng)建一個(gè)表單模板(類),并從這個(gè)基類里導(dǎo)出所需的表單。
一切都是對(duì)象
代碼復(fù)用簡化了開發(fā)過程,像實(shí)現(xiàn)和可視化繼承這樣的功能有利于更簡單、更強(qiáng)大的代碼復(fù)用。然而,代碼復(fù)用并不是到此為止。你能通過支持VB.NET的通用語言運(yùn)行庫(Common Language Runtime - CLR)繼承在其它 VS.NET 語言里定義的類。例如,你或別人創(chuàng)建了一個(gè) C# 類,然后就能從 VB 里繼承它。
VB.NET 的面向?qū)ο竽芰U(kuò)展了語言本身的通路:一切都是對(duì)象。這意味著比在以前的 VB 版本里,你獲得了更多的內(nèi)在功能,你將很少被迫使用 Windows API。例如,在以前的 VB 版本里,你使用 LoadPicture 方法加載圖片并使用表單的 Line 方法(或較快的 API) 畫線?,F(xiàn)在,你使用 System.Drawing 對(duì)象來創(chuàng)建并處理圖形。你可以使用以下代碼在表單上顯示一幅圖片:
- picshowpicture.Image = _
- system.Drawing.Image.FromFile( _
- "c:\test.bmp")
注意 VB.NET 的“一切都是對(duì)象”方式讓你的語句能用得更長久。
考慮以下語句,它在一個(gè)圖形對(duì)象上畫一條黃綠色的線:
- objgraphics.DrawLine(system.Drawing. _
- Pens.Chartreuse, 0, 0, 100, 100)
這些長長的語句也有好處:改進(jìn)的功能、適應(yīng)性和易用性。從前,你要實(shí)現(xiàn)先進(jìn)的功能就不得不在文檔中挖掘,經(jīng)常是不得不訴諸API。現(xiàn)在,相關(guān)的功能集符合邏輯地包含在對(duì)象里。這種處理方式的另外一個(gè)好處就是:類把相關(guān)的功能很好的組織了起來。所以,瀏覽你感興趣的對(duì)象,發(fā)現(xiàn)它們做些什么實(shí)際上很有意思。
Visual Basic.NET 的面向?qū)ο蠊δ芴峁┝撕芏鄬?shí)在的好處。很多情況下,VB.NET 面向?qū)ο蟮谋举|(zhì)和實(shí)現(xiàn)的繼承性能幫助你比在以前的VB 版本里更容易、更迅速地創(chuàng)建特定類型的功能。然而,你不一定要僅僅因?yàn)槟隳茏龅?,就使用?shí)現(xiàn)繼承性或其它 .NET 功能。VB.NET 的新功能使開發(fā)許多類型的應(yīng)用程序變得更簡單!但是,就像使用所有的語言能力一樣,你需要使用的是在特定場合下最適合的功能。
自由線程的危險(xiǎn)
對(duì)于自由線程可能需要特別給出警告。VB6允許你使用獨(dú)立的線程來創(chuàng)建多線程服務(wù)器程序,但VB過去從來沒有讓你能創(chuàng)建自由線程的客戶端程序。VB.NET 改變了這一切。現(xiàn)在,創(chuàng)建自由線程應(yīng)用程序幾乎成了最微不足道的事情。實(shí)際上,我估計(jì)那些沒有理解其中的微妙差別,就在他們的應(yīng)用程序里添加了自由線程的程序員會(huì)遇到很多問題。只需要幾行代碼就能啟動(dòng)一個(gè)新線程:簡單地將線索對(duì)象的地址傳遞給方法,方法本身就會(huì)啟動(dòng)線程。這確實(shí)是很酷也很有用的東西,但你需要小心:這些功能適用于特定的場合,確定哪些是適用的場合并且明智的使用這些工具則是你自己的事。許多開發(fā)者使用繼承性和自由線程時(shí)給自己找了不少麻煩,請(qǐng)不要讓這些發(fā)生在你身上。
可能大家討論得最多的VB.NET 特征就是 CLR (通用語言運(yùn)行庫),VB 運(yùn)行在它的頂層上。是 CLR 提供了 VB.NET 的許多關(guān)鍵功能。例如,CLR 使實(shí)現(xiàn)和跨語言繼承性以及自由線程成為可能。
分發(fā)VB程序要求你同時(shí)分發(fā)VB的運(yùn)行庫,在VB6里即是msvbvm60.dll。許多其它語言也有類似的要求,包括 C++ 和 Java。在Visual Studio.NET里,所有的Visual Studio語言共享同一個(gè)運(yùn)行庫:CLR。
這里有幾個(gè)較大的變化,首先,所有的Visual Studio語言現(xiàn)在都共享同一個(gè)IDE、同樣的表單引擎、同樣的異常處理機(jī)制等等。這意味著Visual Basic和像 C#這樣的語言擁有同等的地位,至少差不多是同等的。
【編輯推薦】