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