代碼重用簡化了開發(fā)過程,而可視化繼承之類的功能又使得代碼重用更加方便。 然而,代碼重用并不局限于此。借助作為VB.NET基礎(chǔ)的CLR(Common Language Runtime,公共語言運行時環(huán)境),我們可以在VB.NET中繼承其他VS.NET語言編寫的類。例如我們可以編寫一個C#類,然后在VB.NET類中繼承該C#類。 VB.NET的面向?qū)ο蠊δ芤呀?jīng)向各個方向擴展,甚至深入到了語言本身——在VB.NET中,一切都是對象。它意味著和以前的VB版本相比,我們從VB.NET本身獲得的支持和功能要多得多,求助于Windows API的時候?qū)⒏。例如,在以前的VB版本中,我們用LoadPicture方法裝入一個圖形,用Line方法(或者其他速度更快的API函數(shù))畫線;而在VB.NET中,我們用System.Drawing對象創(chuàng)建和處理圖形。下面這段代碼用System.Drawing對象在窗體上顯示一個圖形: picshowpicture.Image = _ system.Drawing.Image.FromFile( _ "c:test.bmp")
注意,VB.NET的“一切都是對象”可能會使代碼變得冗長?紤]下面這個語句,它在一個圖形對象上面畫一條黃綠色的線: objgraphics.DrawLine(system.Drawing. _ Pens.Chartreuse, 0, 0, 100, 100) 語句雖然變長,但它獲得的好處是:更加靈活,更加容易使用。以前,要實現(xiàn)一些較為復雜的功能往往要深入研究文檔,通常還要求助于API,F(xiàn)在,所有相關(guān)的功能集都封裝到了對象之中。用對象封裝功能還有額外的優(yōu)點——對象以一種極為優(yōu)美的形式把相關(guān)功能組織了起來,所以瀏覽各個對象、看看它們到底做些什么,事實上也是一件有趣的事情。 Visual Basic.NET的面向?qū)ο筇厣珟砹嗽S多切實的好處。大多數(shù)情況下,和以前的VB版本相比,VB.NET面向?qū)ο蟮谋拘砸约八鼘^承的支持使得創(chuàng)建某些類型的應(yīng)用更加快速和方便。然而,雖然我們可以使用繼承以及其他.NET的新功能,比如自由線程,但這些功能并不是一定得使用不可。正如所有其它語言的功能,我們必須使用的功能是那些對給定情形來說最具有意義的功能。 自由線程或許有必要特別說明。VB6允許通過單元線程創(chuàng)建多線程的服務(wù),但VB從來沒有支持過創(chuàng)建自由線程的客戶程序。VB.NET改變了所有這一切,F(xiàn)在,創(chuàng)建自由線程的應(yīng)用已經(jīng)是一件非常平凡和普通的事情。它是如此平凡,以至于完全可以預料有些程序員在為應(yīng)用加入自由線程時不會理解它的具體細節(jié)。啟動新的線程只要很少的幾行代碼——只需把方法的地址傳遞給線程對象, 該方法就會啟動一個新的線程。這無疑極為實用和方便,但必須注意的是:這些功能只適合特定的情形,了解哪些情形適用這些功能以及如何恰到好處地運用這些功能屬于開發(fā)者自己的責任。坦率地說,許多開發(fā)者會因為濫用繼承和自由線程而給自己帶來麻煩,希望這中間并不包括你。
|