【閒聊】大家選擇的是C#或VB.NET呢?
一時興起想到的題目。
開發.NET程式,C#與VB.NET幾乎具有完全相同的能力,微軟的官方想法本來也就是蘿蔔青菜各有所好,把使用語言的決定權交給開發人員決定。
我在學.NET前寫過好幾年的VB及ASP,因此一開始入門是從VB.NET開始的,但只玩了一兩個月後就改走C#(雖然微軟在推出C#/VB.NET時的說法,C#適合有C/Java背景的人,我兩個都沒有),一直到現在。
我個人偏好C#的理由是: (純個人意見,非關語言優劣)
- 用字比較精簡,{ } vs Begin End、繼承、實作介面C#只用一個:就打死,而VB.NET則是用保留字。程式一長,當場省下好多文字。
- 語法區隔性比較強。像C#陣列用[],函數用(),等於比輸用==;而VB.NET陣列與函數都用(),指定與比較都用=。
- 排列自由,可以任意空白、換行,把程式碼調成自己想要呈現的方式,易於閱讀。
例如:
if (
a == b || //Blah blah
c == d || //Blu Blu
e == f //Kero Kero
)
{ … }
VB.NET也可以,但要多加_,比較繁瑣。 - C#裡有@"..."可以用,程式要內嵌SQL或Javascript時很方便:
string sql = @"
SELECT *
FROM WTFTable
WHERE Col1 = ‘kerokerokero’”; - 與Javascript的語法較相近,不必同時熟悉兩套不同的語言(年紀大了腦容量變小),寫Web時可以減少大腦Context Switch的功夫(呵)。不過,還是常常不小心把二者搞混,在Javascript中打成foreach (var p in q)或for (int i = 0; …)。
- 網路找到的進階範例程式,C#的比例比VB.NET高。以CodeProject做個不嚴謹的例子,比一下文章的發表頻率便知: C#、VB.NET(看下方Last 10 Updates的發表日期)。
- 當初還有個天真的想法,C#跟Java比較接近,"萬一"(呃... 只是萬一而已)必須轉到Java時,可以比較快接軌。(不過現在看來,這個萬一發生的機率跟中樂透頭彩差不多)
但C#還是有吃癟的場合:
- VB.NET在.NET 3.0裡對XML表示有額外的支援: 如直接內嵌XML(XML Literals)、Default Namespace。
- VB.NET支援Named Parameter及預設參數值,例如: word.Documents.Open( FileName:=file_title, ConfirmConversions:=False, ReadOnly:=False ),若用C#寫,十幾個參數得全部列出來。
- 有些應用程式只支援VB.NET,例如: Reporting Service的Embedded Code。
大家都慣用哪一種語言呢?