細說VB.NET(上)

 

細說VB.NET(上)
(作者:青蘋果工作室編譯 2001年03月07日 14:47)

  微軟公司提出的.NET概念,正從各個方面滲入到我們的生活中。它將產生的作用,誠如一位業內名家所描述的:“請忘掉你認爲你所知道的,.NET將改變一切”!既然如此,無論是IT業內人士、還是企業決策者,快速領會這個新概念的含義及深遠影響,都顯得非常必要。

概要
  VB正在不斷地發展中,它具備了以前VB編程人員作夢都想擁有的性能,想象一下你將隨心所欲的利用這些性能,是不是很令人激動?然而,這個計劃於2001年第四季度上市銷售的VB版本可能會給你帶來些小麻煩,因爲要完全掌握它需要一個較長的學習週期,而且其中包括了一些微妙的變化,你可能在使用他們的時候出現錯誤。

  需要準備的條件:建議獲得Visual Basic.NET beta 版,這些內容對所有VB程序員都是有用的。

  Microsoft .NET平臺的涵蓋面很廣,而且很難預測它的真正意義。我們注意到,現在有很多關於.NET的不正確的理解。因此在這篇文章裏,我們將把給你一個VB.NET到底是些什麼的概念,從頭到尾說一說它是什麼、它能幹什麼以及怎樣才能充分發揮它的優點。我們要特別地細看一下IDE的改變、面向對象特徵、底層結構的改變、一些“現代化”的語法以及包裝和分發方面的增強。我們將討論這些功能能爲你做什麼,解釋他們的優點與不足。由於這些改變是如此之大,而且涉及方方面面,因此希望這一篇文章能滿足你全部的要求是不現實的,要了解這方面全部的知識請參閱有關文章和書籍。

  Visual Basic.NET 和你現在所知的開發工具完全不同,並且這個新版本會改變你的未來。到底有多大不同?如果你覺得從VB3遷移到VB4是一個很大的變化,那這次VB.NET會讓你感到震驚。這次升級與其說是VB的一個新版本,還不如說是遷移到一個新平臺上,你所面臨的情況就和從DOS遷移到Windows差不多。

VB獲得了繼承能力
  VB.NET預期擁有的第一新功能就是繼承能力。繼承是VB開發者長期以來要求得最多的功能。判斷一下對繼承的要求是不是像早些時候對本地化編譯器的要求一樣將是一件很有意思的事,後者,當Microsoft提供了一個以後,你就幾乎聽不到多少這方面的言語了。

  Visual Basic現在是真正的面嚮對象語言了。過去,你可以通過使用VB的界面繼承性創建僞實現的對象繼承,但現在不必這樣做了。

  Visual Basic.NET 現在提供大量面向對象功能,包括應用程序繼承,它允許你從其它類導出你想創建的類。像在其它面嚮對象語言裏一樣,你能覆蓋基類的方法和屬性,並且能實現多態以創建健壯的、擴展性好的組件。例如,假定你從基類 Crane裏繼承產生了一個ForkLift類,你能使用像下面的代碼覆蓋基類裏對Lift方法的默認實現:

  Public Class ForkLift

   Inherits Crane

   Overrides Sub Lift(ByRef _

   Height As Double)

   Height = Height + 10

   End Sub

  End Class

  VB.NET不僅能讓你覆蓋方法或屬性;它還能讓你重載方法。重載是定義同名、但使用不同數據類型的方法或屬性的能力。例如,假定你有一個組件能對不同數據類型的數組進行排序,你不需要三個(每種數據類型一個)不同名的方法;實際上你可以重載一個方法名:

  Overloads Sub SortArray(ByRef _

   aValues()As String)

  ...

  Overloads Sub SortArray(ByRef _

   aValues() As Integer)

  ...

  Overloads Sub SortArray(ByRef _

   aValues() As Object)

  另一個改變是:表單現在是類模塊。這就是說類本身包含建立表單的所有“肥料”的代碼。你可能想知道,爲什麼你不得不看到這些從前不用看的代碼,但這個改變同時帶來強大的新功能,包括繼承這些表單的能力。Microsoft把這一技術稱爲可視化繼承。假定你的對話框有一種標準的格式,例如在表單的一側有一行按鈕,並在角上有一個標識,那麼,通過可視化繼承你能創建一個表單模板(類),並從這個基類裏導出所需的表單。

一切都是對象
  代碼複用簡化了開發過程,像實現和可視化繼承這樣的功能有利於更簡單、更強大的代碼複用。然而,代碼複用並不是到此爲止。你能通過支持VB.NET的通用語言運行庫(Common Language Runtime - CLR)繼承在其它 VS.NET 語言裏定義的類。例如,你或別人創建了一個 C# 類,然後就能從 VB 裏繼承它。

  VB.NET 的面向對象能力擴展了語言本身的通路:一切都是對象。這意味着比在以前的 VB 版本里,你獲得了更多的內在功能,你將很少被迫使用 Windows API。例如,在以前的 VB 版本里,你使用 LoadPicture 方法加載圖片並使用表單的 Line 方法(或較快的 API) 畫線。現在,你使用 System.Drawing 對象來創建並處理圖形。你可以使用以下代碼在表單上顯示一幅圖片:

  picshowpicture.Image = _

   system.Drawing.Image.FromFile( _

   "c:/test.bmp")

  注意 VB.NET 的“一切都是對象”方式讓你的語句能用得更長久。

  考慮以下語句,它在一個圖形對象上畫一條黃綠色的線:

  objgraphics.DrawLine(system.Drawing. _

   Pens.Chartreuse, 0, 0, 100, 100)

  這些長長的語句也有好處:改進的功能、適應性和易用性。從前,你要實現先進的功能就不得不在文檔中挖掘,經常是不得不訴諸API。現在,相關的功能集符合邏輯地包含在對象裏。這種處理方式的另外一個好處就是:類把相關的功能很好的組織了起來。所以,瀏覽你感興趣的對象,發現它們做些什麼實際上很有意思。

  Visual Basic.NET 的面向對象功能提供了很多實在的好處。很多情況下,VB.NET 面向對象的本質和實現的繼承性能幫助你比在以前的 VB 版本里更容易、更迅速地創建特定類型的功能。然而,你不一定要僅僅因爲你能做到,就使用實現繼承性或其它 .NET 功能。VB.NET 的新功能使開發許多類型的應用程序變得更簡單!但是,就像使用所有的語言能力一樣,你需要使用的是在特定場合下最適合的功能。

自由線程的危險
  對於自由線程可能需要特別給出警告。VB6允許你使用獨立的線程來創建多線程服務器程序,但VB過去從來沒有讓你能創建自由線程的客戶端程序。VB.NET 改變了這一切。現在,創建自由線程應用程序幾乎成了最微不足道的事情。實際上,我估計那些沒有理解其中的微妙差別,就在他們的應用程序裏添加了自由線程的程序員會遇到很多問題。只需要幾行代碼就能啓動一個新線程:簡單地將線索對象的地址傳遞給方法,方法本身就會啓動線程。這確實是很酷也很有用的東西,但你需要小心:這些功能適用於特定的場合,確定哪些是適用的場合並且明智的使用這些工具則是你自己的事。許多開發者使用繼承性和自由線程時給自己找了不少麻煩,請不要讓這些發生在你身上。

  可能大家討論得最多的 VB.NET 特徵就是 CLR (通用語言運行庫),VB 運行在它的頂層上。是 CLR 提供了 VB.NET 的許多關鍵功能。例如,CLR 使實現和跨語言繼承性以及自由線程成爲可能。

  分發VB程序要求你同時分發VB的運行庫,在VB6裏即是msvbvm60.dll。許多其它語言也有類似的要求,包括 C++ 和 Java。在Visual Studio.NET裏,所有的Visual Studio語言共享同一個運行庫:CLR。這裏有幾個較大的變化,首先,所有的Visual Studio語言現在都共享同一個IDE、同樣的表單引擎、同樣的異常處理機制等等。這意味着Visual Basic和像 C#這樣的語言擁有同等的地位,至少差不多是同等的。

>>>>>下一頁:易於反編譯的中間語言、垃圾收集需要新體系結構、Set語句消失了

>>>>>最後一頁:表單和新IDE面孔、創建編譯的服務器端代碼、正確之路

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章