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