一時興起想到的題目。

開發.NET程式,C#與VB.NET幾乎具有完全相同的能力,微軟的官方想法本來也就是蘿蔔青菜各有所好,把使用語言的決定權交給開發人員決定。

我在學.NET前寫過好幾年的VB及ASP,因此一開始入門是從VB.NET開始的,但只玩了一兩個月後就改走C#(雖然微軟在推出C#/VB.NET時的說法,C#適合有C/Java背景的人,我兩個都沒有),一直到現在。

我個人偏好C#的理由是: (純個人意見,非關語言優劣)

  1. 用字比較精簡,{ } vs Begin End、繼承、實作介面C#只用一個:就打死,而VB.NET則是用保留字。程式一長,當場省下好多文字。
  2. 語法區隔性比較強。像C#陣列用[],函數用(),等於比輸用==;而VB.NET陣列與函數都用(),指定與比較都用=。
  3. 排列自由,可以任意空白、換行,把程式碼調成自己想要呈現的方式,易於閱讀。
    例如:
    if (
         a == b || //Blah blah
         c == d || //Blu Blu
         e == f     //Kero Kero
        )
    { … }
    VB.NET也可以,但要多加_,比較繁瑣。
  4. C#裡有@"..."可以用,程式要內嵌SQL或Javascript時很方便:
    string sql = @"
    SELECT *
    FROM WTFTable
    WHERE Col1 = ‘kerokerokero’”;
  5. 與Javascript的語法較相近,不必同時熟悉兩套不同的語言(年紀大了腦容量變小),寫Web時可以減少大腦Context Switch的功夫(呵)。不過,還是常常不小心把二者搞混,在Javascript中打成foreach (var p in q)或for (int i = 0; …)。
  6. 網路找到的進階範例程式,C#的比例比VB.NET高。以CodeProject做個不嚴謹的例子,比一下文章的發表頻率便知: C#VB.NET(看下方Last 10 Updates的發表日期)。
  7. 當初還有個天真的想法,C#跟Java比較接近,"萬一"(呃... 只是萬一而已)必須轉到Java時,可以比較快接軌。(不過現在看來,這個萬一發生的機率跟中樂透頭彩差不多)

但C#還是有吃癟的場合:

  1. VB.NET在.NET 3.0裡對XML表示有額外的支援: 如直接內嵌XML(XML Literals)、Default Namespace
  2. VB.NET支援Named Parameter及預設參數值,例如: word.Documents.Open( FileName:=file_title, ConfirmConversions:=False, ReadOnly:=False ),若用C#寫,十幾個參數得全部列出來。
  3. 有些應用程式只支援VB.NET,例如: Reporting Service的Embedded Code。

大家都慣用哪一種語言呢?


Comments

# by AMO

我比較習慣C#,雖然高職時期都是接觸VB,但是上大學後C跟JAVA比較熟練,所以就直接選擇C#了~

# by 小賤健

C#, VB.Net 都喜歡。不過最近有越來越偏向寫 VB.Net 的趨勢,覺得它像人寫的文章,比較好閱讀。完成的程式,看來就像是完成一題申論題,很有滿足感XD

# by Shelly

我目前用的也是c#... 高職也是都用vb,連剛出社會沒多久也都是vb。 不過一開始接觸asp.net的時候就用c#...然後一直到現在。 最近又回頭寫vb.net,真的覺得超級不習慣,而且程式碼看起來沒有c#漂亮= =" 所以我還是比較喜歡c#

# by mOMo

我選擇C#的最大原因應該就是屬於C family家族,現在許多程式語言的語法都廷至於C語言。

# by 大估

大估本身有走過三年JAVA的○,但我是用vb.net的語法。 因為…當時,我主管選vb.net,之後,跟著主管一起跳槽下一間公司,所以還是選vb.net… XD

# by dmwc

VB.Net 在 VisualStudio 內我覺得表現比較好,我說的表現不是指寫出來的程式,而是例如 intellisense 或是寫出來的程式有點錯誤那種警告, VB.Net 反應速度遠比 C# 快太多 VB.Net 開發程式的速度真的比較快,但 C# 有比較多的現成資源可以用,我的喜好是要吃別人的來用時,最好用 C# ,但自己用的小程式用 VB.Net 開發速度比較快,要跑 SQL 最好也是用 C# ,原因是 @"..." 實在太好用, VB.Net 缺了這個功能寫出來後畫面會有點亂,不過也可以塞到資源檔內來彌補 VB.Net 的這個缺點 會 VB 還有一個好處,可以寫 VBA 和 Windows Script ,不過其實差異還漫大的,比較接近 VB6

# by evakey

當學生的時候也是寫 VB、ASP,現在因為公司的關係所以走 C#,不過個人也偏好 C#,理由跟黑大幾乎一樣(排除第5,6點)。

# by 小桶子

我也是從asp一直寫來.net 個人也偏好C#,因為國外資源比較多 且因為看了Allen大的文章~~決定走c#~~

# by Joey

「當初還有個天真的想法,C#跟Java比較接近,"萬一"(呃... 只是萬一而已)必須轉到Java時,可以比較快接軌。(不過現在看來,這個萬一發生的機率跟中樂透頭彩差不多) 」 我家老闆要騙我們寫java時,都直接說C#跟java一樣啦,你會C#就會java了....OK的啦.. 差點沒死給他看...

# by VampireNeo

讀學生時讀的是 Java 和 C++, 自學了 VB 剛工作時只寫 Javascript, 不自覺把 Java C++ 和 VB 都忘得七七八八了... -_-" 後來轉工時, 接觸 ASP.net 的時候就用C#, 於是一直到現在~

# by 亞米斯

原來 VB 沒有 處理字串的@ 功能 害我轉到C#時 還一直問說當初VB沒有這功能阿 VB特有的函式 是不是可以 拉DLL 進來就可以用了呢 印象中有用過耶

# by Allen

我以前學VB,VBA,VBScript,很慶幸.net是學C#,因為就我以前所學,肯定會看不懂設計模式這類的書(因為它們大多用C++,Java來解釋) 無論學哪一種,最好能稍微看懂另一種,可以方便上網找資訊

# by

從讀書開就就是一系列c like 語言,c,c++,java,最後c#,出來工作又碰到vb.net,剛開始有點難轉,用久後其實感覺也差不多~但目前開發還是以c#為主,最後推 Javascript 的迴圈常常打常for (int i = 0; …)。 orz…

# by JohnnyFang

黑暗大對 C# 認為是優點、VB.Net 是缺點的地方恰與我相反, 例如我個人很愛 VB.Net 用保留字來陳述的方式, 像 If ... Then ... End If, 整段程式的 block 就很明確, 不會有到處都是右大括弧找不到結束點的困擾啊 ... XD (如果沒有經過排版,或程式碼太多的時候)

# by Leo

主力是 VB.NET,公司也是請我進來做 VB.NET 的 SD,不過自學 C#,因為公司其他部門的都是 JAVA,那天被調支援血會流比較少....

# by Bill Chung

嗚~我的C#寫的很爛..

# by Kevin

C# @"..." --> 這個可以解騵一下用途嗎? 學vb.net,有時會參考c#,但真的沒看過這種用法呀

# by Sean

自己目前開發新的程式都是使用c#,但是維護舊程式則是vb.net c#麻煩的一點是late binding,vb.net createobject很好用,c#相對就麻煩許多 例如使用者電腦上的excel 有 excel 2003 /excel 2007 就沒辦法事先參考excel object,而要在程式碼中建立 to kevin @在處理路徑時很方變,以下取自MSDN @ 括住的優點是不會處理逸出序列,這讓它很容易撰寫,例如,完整檔案名稱: @"c:\Docs\Source\a.txt" // rather than "c:\\Docs\\Source\\a.txt"

# by Walter

to JohnnyFang, 使用 C# 的時候,可以將游標停在括弧上,然後按鍵盤 Ctrl+] 就可以跳到那一個區塊的頭跟尾哦,而且前後括弧會用灰底標示出來,我覺得還蠻好用的~

# by Ark

....我可能比較賤 我都好喜歡,常常興奮的亂包dll 小規模的用vb 的全域模組很方便 大規模的c#比較好釐清分散

# by Fuevaco

哈哈!! C#! 因為愛!

# by kennyshu

C# +1. 語言嚴謹精練,美國這邊C#比較蓬勃發展,和台灣似乎相反。

# by galaxy

在學校時是玩java,所以之後工作要寫asp.net時,選的是c#,不過剛學時,覺得不習慣的是c#是用using來import其他class,vb則和java一樣是用import,哈~

# by 路過的貓

在學時寫C# 工作時寫VB 各有各的優點,所以我兩個都支持 不過再加上JAVASCRIPT 常常遇到三種語言的語法搞混在一起 OTL.....

# by Terry

我選擇C#! 在實習時第一次接觸了C#,之後就愛上了!

# by nowhereman

個人偏好VB.net, 及正統的C/C++ 不喜歡被M$污染過的C# (微軟基本教義派別打我.)

# by scott

前幾年工作都是用java, 我初學語言是C++ 現在轉C#了. 另外,我個人也是覺得C#比較容易閱讀,習慣性吧

# by demo

一開始學程式的時候也是用vb.net 寫好一個專案以後跳槽到C#重此愛上了c#

# by 初心者

我也是寫了多年的asp後才跳至C#, 一開始很抗拒,沒辦法公司的走向, 但用久了後,就漸漸開始討厭VB script了, 老一輩的人,有一堆vb達人, 一直幻想,我也是個會寫java的人。

# by SAM

一直用VB.NET多年,很想到C#,但就是會有點抗拒...唉~~~ 慣性使然...

# by Litfal

大多都玩VB.NET 不過C#也能讀能寫(不要太複雜的話) 問問題或討論時籠a通 其實最想學C++ (也不是不會寫) 但是MFC看起來好像別的領域的東西, 讓人卻步不前

# by lip

請問c#有對應vb.net "On Error Resume Nnext"的功能嗎? 如果c#有的話就太好了!

# by lichai

try...catch當然是vb.net和c#標準的錯誤控制,但不能忽略錯誤(error就跳到catch,錯誤行後面的程式會執行不到,就算後面的程式是好的也不會被執行)。不然就要每行一個try catch,10行程式就10個try catch。 on error resume next好處是不用管錯誤,error時就換下一行執行,最後每一行都會執行到。(一些不重要錯誤可忽略,正常的程式就執行)。 當然重要的程式區塊還是會用try catch,但不可否認,總會有一些無關僅要的function,又懶得做太多錯誤控制,這時on error resume next真的是很方便。

# by 小強

以前學過VB6 後來轉學用C#,喜歡C#簡潔的語法

# by Magic

在前一家公司使用 C#,來到這裡後入境隨俗用 VB.Net,可是個人還是比較喜歡 C#,光是使用 {} 跟 Begin End 的差別跟換行要加 _ 這兩點我就覺得 C# 用起來順手的多。

# by Ark

4.可以補充一下~VB的多行字串法 Dim sql As String = <s><![CDATA[ SELECT * FROM WTFTable WHERE Col1 = ‘kerokerokero’ and col2>@col2 ]]></s>.Value 正所謂~爛有爛打法 而且須注意換行符號是vbLf不是vbCrLf 有必要區隔的話可自行用Extension的方式~串著解 當然上面是沒有C# 的@簡潔 還有C#的lambda,VB也滿吃鱉的

# by 大肚雞

C#!! 因為open source大多是C# 我就盲目跟從了.....

# by Shaun

有Java底子的話...不知道轉學C#不知道要多久@@?有人有相關經驗嗎?

# by forink

我JAVA很爛只會寫小程式,但是有兩年ASP.NET VB的開發經驗,當初因為工作的關係改寫C#,上手大約只花了一個星期左右~

# by TheBestYea

個人是選擇VB 因為VB有許多方便的語法 且調用與呼叫不同form的屬性或物件比較方便 VB 的Form.Show只打這句也不會重複案就跑出更多同樣的表單 且微軟有內建支援my語法 再者VB不會因為沒USING到就出現錯誤的問題XDD

# by 肥肚肚

高一也是學VB.NET ,高二就跳槽C#了,因為第一個語言學的是C/C++,所以比較習慣C#,其實都挺喜歡的,不過我更喜歡C#~

# by .net

兩個都會寫 很多人都推崇C# MSDN新的開發項目確實也都以C#為主 但實際上以台灣的商業環境來說 C#沒有VB.net符合開發效益與維護成本 因為VB.net寫一個案子比C#更快 而且兩邊的效能幾乎不相上下 程序員的學習曲線也短 不用浪費太多學習成本 老闆會管你寫的技巧多牛逼嗎?就算知道你很牛逼 會+$? 那你用VB.net開發出他要的功能就好了 而且DeBug來說 VB.net也比較容易 更好維護

# by Hardway Chen

VB和C#雙修,目前開發專案都用VB,有時用C#,.NET愛好者 我會7種語言:Java、C#、F#、Basic、PHP、VB.NET、JavaScript

Post a comment