天天看點

Visual Basic.net還是C#

visual basic.net還是c#

——如何選擇.net語言

在.net中,如何選擇vb或c#?這似乎已經争論了很久。很多人盲目選擇,也産生了許多流言和錯誤。本文将從以下方面指導你選擇正确的開發語言。

功能上的考慮

許多人認為c#的功能比vb.net強大,或者c#更加适合.net等。其實這不是一兩句話能比較清楚的。c#的确有vb無法完成的功能,但vb也有c#無法完成的功能。總的來說,對于.net開發,vb和c#沒有任何差别,都100%相容于cls。下面列出的是他們語言功能上的不同,這些僅僅是語言實作上的問題,不會影響到生成的代碼。打*号的内容與cls不相容。

c#有而vb沒有的功能:

1、 運算符重載。*

2、 不安全代碼(指針和固定記憶體區)。*

3、 無符号整數。*

4、 移位運算。

vb有而c#沒有的功能

1、 即時編譯。

2、 靜态事件綁定。

3、 條件異常捕獲。

4、 com相容類。*

5、 寬松的類型檢查和變量聲明。

6、 visual basic runtime庫。

7、 可選參數、帶參數屬性、子產品等語言特征。*

8、 動态數組。*

可見,實際上功能更強大的是vb而不是c#。不過它們不一樣的地方多半是無關緊要的特征。總體上來說,不應從功能上選擇vb或者c#,因為他們沒有什麼具體的差别。

性能上的考慮

性能是程式員最關心的問題。vb和c#都生成一樣的il,是以理論上說不會有性能的差異。但許多人為什麼說c#的性能高于vb.net呢?這是因為vb.net支援即時編譯,就是一邊書寫代碼一邊編譯。這樣可立刻發現文法錯誤,使調試變得更加容易。但是這樣一來vb就需要随時浏覽整個代碼檔案,并把臨時資料儲存。這造成vb.net生成的代碼中常常具有備援部分。但也不能就此下結論說vb比c#慢,當使用者選擇打開優化并且以release方式編譯工程,就能得到與c#一樣簡短快速的代碼。

學習上的難度

這部分不僅僅初學者需要考慮,那些從現有開發工具轉移到.net的開發人員也需要考慮。首先,vb和c#都是非常簡單的,對于初學者來說,vb提供伸縮性更強的空間,是以比c#更加易于接受。但這隻是相對而言,c#對于初學者來說也不會有太多的困難。

對于使用visual basic6或其他版本的程式員來說。vb.net的文法顯然要比c#更加接近vb6,網上流傳的vb與vb.net差别被過分誇大,使部分程式員退縮。其實vb.net增加的隻是面向對象的思想,許多vb程式員不具備完善的面向對象程式設計開發經驗,是以覺得vb.net難以接受,這是很容易克服的。想想看,即使你要使用c#不也得學習面向對象嗎?至于有c/c++/java經驗的人,c#是小菜一碟。剛才說過c#和vb實際上都很簡單,是以不見得vb程式員學習c#就要比c/c++程式員來的困難,反之亦然,有c/c++經驗的人也可以果斷的選擇vb。

移植現有代碼

這一部分是程式員最頭疼的部分。但對語言選擇有決定性的意義。

從vb6移植代碼的程式員,最佳選擇就是vb.net,因為其他.net語言沒有一種是與vb相似的。而且即使vb6的工程移植到vb.net非常困難,也有一個移植向導可以幫助你完成大部分工作。如果手工把他移植到c#,需要白白花費大量的時間。而且剛開始使用c#的vb程式員通常都會為c#缺少他們熟悉的函數而頭疼。vb.net不會出現這種情況。

從asp移植到asp.net,首選語言仍然是vb.net,因為多數程式員使用的asp語言是vbscript,隻有vb.net最大程度地接近這種語言。

c#對于移植代碼似乎沒有作用,了解c#的人都明白,把現有c/c++代碼放到c#中運作幾乎是100%不能通過的。是以,如果需要移植c/c++代碼,最好使用visual c++.net。他做到了最好的新舊結合。c#僅僅用于編寫新的.net應用程式。

如果需要從java移植代碼,c#可以選擇。同時還有j#及其他一些ms提供的轉換工具。

文檔和資源方面的考慮

在msdn文檔中,c#和vb是同等看待的。所有文檔和例子都是有vb和c#兩份的。是以,在尋求資源方面都不用擔心。網際網路上的資源,c#要多于vb,特别是國内,有傾向于c#的潮流。但是asp.net的資源vb較多。國内缺乏vb.net資源是影響vb.net推廣的重要原因。但是在國外有很多非常成熟的vb技術,如掌上裝置的開發技術。

代碼風格和雜項問題

c#書寫的代碼比vb平均短小20%,許多人不喜歡vb中過長的關鍵字。當然他們可以選擇c#。但在開發環境中,vb的自動完成功能比c#更完善,其實30%的代碼都是自動補充的。是以,實際上vb程式員不會比c#多打多少字。但vb語言換行比c#麻煩,如果需要書寫大量繁雜而長的代碼,最好選擇c#。vb的代碼接近完整的英語,比c#更加易讀。如果是初學者不妨選擇vb。