明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

Visual Basic與C#技巧比較

[摘要]首先聲明,此處僅作語言方面的對(duì)比,在.NET生產(chǎn)力上,兩者沒有區(qū)別。進(jìn)行這個(gè)對(duì)比是為了澄清對(duì)Visual Basic和C#功能錯(cuò)誤的認(rèn)識(shí)和流言。以下所有區(qū)別都是經(jīng)過較為深刻的研究得出的,相比一些常見...
首先聲明,此處僅作語言方面的對(duì)比,在.NET生產(chǎn)力上,兩者沒有區(qū)別。進(jìn)行這個(gè)對(duì)比是為了澄清對(duì)Visual Basic和C#功能錯(cuò)誤的認(rèn)識(shí)和流言。以下所有區(qū)別都是經(jīng)過較為深刻的研究得出的,相比一些常見的對(duì)比來講更有科學(xué)性

下面先對(duì)比Visual Studio .NET 2003中,兩種語言功能的對(duì)比。*表示對(duì)方語言中沒有這項(xiàng)功能,但是可以用別的語法在IL級(jí)別實(shí)現(xiàn)完全同樣的功能。注意,本次比較只選擇有意義的功能,某些功能,如循環(huán)、分支語句等傳統(tǒng)功能不在比較之列。同時(shí),VB因兼容老版本而遺留的,不具有現(xiàn)代語言特征的語法也不在比較之列(如On Error語句,Option Explicit語句等)。

Visual Basic有而C#沒有的功能
C#有而Visual Basic沒有的功能

局部static變量*

WithEvents和Handles語法*

可選參數(shù)

按名傳遞

屬性參數(shù)

按非虛方式訪問一個(gè)虛函數(shù)

換名實(shí)現(xiàn)接口

后期綁定

With語句*

用Imports導(dǎo)入靜態(tài)成員

模塊

Is操作符*

Try…Catch When語句

Visual Basic運(yùn)行時(shí)庫(kù)的功能和函數(shù)
運(yùn)算符重載

為event指定add與remove訪問器

using語句*

XML注釋文檔

不安全代碼和指針

as操作符

out修飾符*

編譯器CLS檢查


接下來,是未來Visual Studio 2005中兩者功能的對(duì)比。在這個(gè)對(duì)比中,所有因Visual Studio 2005新增功能產(chǎn)生的差異,將以粗體字表示。注意,并不是每一項(xiàng)新增功能都能產(chǎn)生兩者的差異,比如泛型和Partial Type都是兩者皆有的新功能。

Visual Basic有而C#沒有的功能
C#有而Visual Basic沒有的功能

局部static變量*

WithEvents和Handles語法*

可選參數(shù)

按名傳遞

屬性參數(shù)

按非虛方式訪問一個(gè)虛函數(shù)

換名實(shí)現(xiàn)接口

后期綁定

With語句*

用Imports導(dǎo)入靜態(tài)成員

Is操作符*

Try…Catch When語句

Visual Basic運(yùn)行時(shí)庫(kù)的功能和函數(shù)

默認(rèn)實(shí)例

My命名空間
為event指定add與remove訪問器

不安全代碼和指針

out修飾符*

迭代器

匿名方法


可見無論什么版本的對(duì)比,都是Visual Basic的功能比較多。當(dāng)然,僅憑功能的多少,不能改變個(gè)人對(duì)語言的喜好,也不大可能成為選擇開發(fā)工具的依據(jù)。但是有一句話給我的印象很深,我在CSDN上做調(diào)查時(shí),有一個(gè)人說他用C#的理由是:“我用C#是因?yàn)镃#比VB功能強(qiáng),哪怕只是一點(diǎn)點(diǎn)也是強(qiáng)”。即使VB比較強(qiáng),還是會(huì)有人這么說。這就說明語言或開發(fā)工具的歧視不是功能差異造成的,那真正的原因