close
以下是我在網路上看到的,提供給大家分享
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。
功能上的考慮
許多人認為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。
全站熱搜
留言列表