面向對象的程序設計不可避免的將會出現在.Net的世界里。現在問題是,我們要選擇哪一種語言呢?
(飛刀前言:如果您是VB程序員,那么本文將會為您介紹VB.Net與以前版本VB的區別,如果您是C#、C++,C,Java程序員,本文最好不要看,此文的作者的某些觀點會讓我們這些程序員吐血)
在VB.Net中,微軟給與了VB程序員們多年來夢寐以求的東東,也就是真正的面向對象的程序設計語言。也許您已經聽說了,VB.Net與他的前身VB有很大的不同,甚至您都不會認識它了。確實,他們不得不刪除了一些細小的東東,同時改變了一些對象,屬性以及方法,但是這些對一個VB程序員來說都不是什么大問題。實際上,我認為一旦您已經能夠熟練的使用VB.Net,您會發現它比以前的VB版本更加簡單和直觀。因為在學習VB.Net的路上要走不少的彎路,所以我想您可能會對C#產生好奇心,盤算著是否需要放棄VB。
如果您現在已經是一個VB程序員了,而且已經有一定時間了,那么您并不需要去選擇其它的語言,比如C#或Delphi。你會發現VB盡管已經的改變了不少,但是它的核心依在。最主要的變化存在于使用VB.Net中的對象、屬性以及方法。不論您學習哪樣.Net程序,這些都是需要重新學習的。
如果您從Dos時代便開始使用BASIC語言,那么VB.Net將會讓你承受不小的打擊。VB.Net已經去掉了GoSub,While/Wend以及其它一些陳舊的語句。但是微軟已經發出警告,在任何情況下都不要使用非結構性語句。
VB.Net 的優勢
VB.Net 擁有features,而C#沒有。比如,IsDBNull()函數就只存在于VB.Net,C#中是不沒有的。
VB.Net擁有求冪函數以及重新分配數組空間的Redim ,這些C#中也沒有。C#對大小寫很敏感,而大多數的VB程序并不習慣于區分大小寫。以我個人來說,我喜歡VB中的If ....End If 以及Do ...Loop的方式,而不太喜歡C#中{}符號。Select Case語句也比C#中的switch語句更加簡單和緊湊。在C#中,你不得不使用break語句去中止查詢結構。在VB中,你能使用Case 1 to 50,但是在C#中你不得不使用50個獨立的case語句來完成。
當你在使用VB中面象對象的特性時,你會發現Inherits,MoustInherit,NotInheritable,Overridable以及其它一些關鍵字。在C#中,這樣的特性您不得不調用一些模糊的關鍵字和語法,比如在VB.Net中,繼承一個類,你可以這樣寫:
Public Class Person ... End Class Public Class Employee Inherits Person ... End Class
如果使用C#就必須:
public class Person { public Person() { ... } } public class Employee : Person { public Employee() { ... } }
如果你不仔細,您可能會忘記使用Employee : Person語法來繼承Person類。
(飛刀注:此作者為典型的VB程序員,呵呵,沒有想到飛刀認為的C#的優點,全被此作者否定。在這些上面飛刀的個人觀點與這位作者不同,其實只要大家習慣,就會發現C#是多么的好用。如果大家是從VB轉到C#,那么肯定會有一些不適應,但是也沒有到全盤否定的地步,呵呵,習慣就好)
升級至VB.Net有多大困難?
從VB6.0移植至VB.Net,并非沒有挑戰必。但是這里有些事情,我們必須事先準備好:第一,使用類,COM組件,以及遞行排列的開發技術。如果您使用這些程序開發構造,您的移植工作將會很簡單。這里有些程序樣式并不是很容易移植的,比如非零數組,隱含變量(即沒有使用Option Explicit),以及Jet或者RDO。
介紹C#
微軟在創建C#時有兩種思想:第一,需要一個Java的競爭者,微軟需要一個絕對屬于本公司的類似于Java的語言。另外就是,微軟希望有一個全新的,整潔的語言。
C#適合于那些Java、C以及C++程序員,這些程序員已經很習慣于這種語言的結構以及對大小寫敏感的特性。他們也不得不重頭學習.Net的類庫,因此在這時們并不比VB程序員有多少優勢。
C#的優勢
我無可否認,是一名VB的支持者,但是C#確實存在一些優勢,比如多行注釋,以及一些代碼的簡寫:
intValue-- intValue-
其它一些C#的優點就是在Beta版文檔中,C#的資料比VB多。
盡管不會經常用于編寫商業應用程序,但是C#還是支持指針。在這個方面C#確實比VB有著一些小小的優勢。但是,在我的程序中,我很少使用指針。
(飛刀注:可能是我翻譯有錯誤,pointer是否表示指針,如果是,這位作者已經犯下一個天大的錯誤,那就是C#中并不支持指針,而且不知道這位作者是否使用過VC#,怎么能說C#不經常編寫商業應用程序?)
C#擁有使用Unsigned數據類型的能力,同樣的,在商業應用程序中它的使用并不廣泛。
移植之路
從VB6.移植至VB.Net的道路并不平坦,但是我想對于想學好一門新程序語言的您來說,這份投資是值得的。在學習中,我推薦您學習面像對象的程序方式。你會經常在.Net的編程世界中經常
|