首先聲明,此處僅作語言方面的對比,在.NET生產力上,兩者沒有區別。進行這個對比是為了澄清對Visual Basic和C#功能錯誤的認識和流言。以下所有區別都是經過較為深刻的研究得出的,相比一些常見的對比來講更有科學性
下面先對比Visual Studio .NET 2003中,兩種語言功能的對比。*表示對方語言中沒有這項功能,但是可以用別的語法在IL級別實現完全同樣的功能。注意,本次比較只選擇有意義的功能,某些功能,如循環、分支語句等傳統功能不在比較之列。同時,VB因兼容老版本而遺留的,不具有現代語言特征的語法也不在比較之列(如On Error語句,Option Explicit語句等)。
Visual Basic有而C#沒有的功能 C#有而Visual Basic沒有的功能 局部static變量*
WithEvents和Handles語法*
可選參數
按名傳遞
屬性參數
按非虛方式訪問一個虛函數
換名實現接口
后期綁定
With語句*
用Imports導入靜態成員
模塊
Is操作符*
Try…Catch When語句
Visual Basic運行時庫的功能和函數 運算符重載
為event指定add與remove訪問器
using語句*
XML注釋文檔
不安全代碼和指針
as操作符
out修飾符*
編譯器CLS檢查
接下來,是未來Visual Studio 2005中兩者功能的對比。在這個對比中,所有因Visual Studio 2005新增功能產生的差異,將以粗體字表示。注意,并不是每一項新增功能都能產生兩者的差異,比如泛型和Partial Type都是兩者皆有的新功能。
Visual Basic有而C#沒有的功能 C#有而Visual Basic沒有的功能 局部static變量*
WithEvents和Handles語法*
可選參數
按名傳遞
屬性參數
按非虛方式訪問一個虛函數
換名實現接口
后期綁定
With語句*
用Imports導入靜態成員
Is操作符*
Try…Catch When語句
Visual Basic運行時庫的功能和函數
默認實例
My命名空間 為event指定add與remove訪問器
不安全代碼和指針
out修飾符*
迭代器
匿名方法
可見無論什么版本的對比,都是Visual Basic的功能比較多。當然,僅憑功能的多少,不能改變個人對語言的喜好,也不大可能成為選擇開發工具的依據。但是有一句話給我的印象很深,我在CSDN上做調查時,有一個人說他用C#的理由是:“我用C#是因為C#比VB功能強,哪怕只是一點點也是強”。即使VB比較強,還是會有人這么說。這就說明語言或開發工具的歧視不是功能差異造成的,那真正的原因
|