不參與語言聖戰,但我曾與五位來自VB6的開發人員一起工作.Net,加上我自己。這並不是很多,但我所看到的對我們所有人都是真實的。
這兩種語言都非常好,我個人沒有偏好。我對兩者都感到同樣舒適,我真的不認爲兩者都優於其他。
但只是基於我所看到的,當移動到.Net時,您最好從C#開始只出於一個原因。 .Net開發更多的是關於學習和使用類庫,而不是語言語義。VB6通過將短語放入語言規範來隱藏其中的一些內容。
當你正在學習一種與你已經完成的語言不相似的語言時,你更有可能尋找「正確」的方式去做事情。
微軟做了很多工作讓VB.Net很容易讓VB6開發人員接受,因此您可以在VB.Net上輕鬆編寫代碼,與您在VB6中做的非常類似。這意味着依靠「快捷方式」並將不良習慣帶入您的.Net開發中非常容易。所以你看到那些不真正「獲取」諸如ADO.Net差異之類的東西的人,並且他們的程序由於此而具有不良的性能和設計問題。
增加了幾個小時後,根據意見
我只是想澄清,我沒有指出VB不如C#。正如所指出的,兩個編譯到相同的MSIL,並且這兩種語言都很好。 「VB6會帶來壞習慣」的含義可以用一個例子來說明:
與我一起工作的五個人中的兩個在代碼中做了同樣的事情。他們需要從數據庫獲取記錄並循環訪問數據,以便對數據進行一些修改。正常的做法是使用DataReader 或 DataAdatpter與DataTable並通過它循環。然而,他們兩個都創建了一些數組變量,然後循環訪問DataReader結果並將它們分配給數組數組,然後循環訪問數組進行計算,這意味着它們不僅增加了不必要的計算週期,而且還將項目出可能的事情被accesed像
到收集的(假設ar爲數組變量,i是索引)
Dim strFullName AS String = ar(i)(3).ToString() + " " + ar(i)(4).ToString()
他們的方法的工作,但添加額外的週期,並使代碼更難理解。我問他們每個人爲什麼這樣做。其中一位想要在連接關閉後能夠使用這些數據,因此他們不會意外更新某些內容。這是你需要擔心的一個RecordSet,但不是DataReader或DataAdapter。這顯然是有人沒有把握VB6的做事方式和ADO.Net之間的區別。另一個對陣列感覺更舒適,因爲她熟悉它們。
所以我的觀點與一種語言比另一種「更好」無關。這將是傲慢的,也是不瞭解的。在功能上,你可以做的事情不多,而另一個則無法做到。而且我喜歡之前提到的一些VB.Net「快捷方式」。 (VbNewline vs System.Environment.NewLine和整個My命名空間,InputBoxes等)。
我的觀點是,當學習完全陌生的東西時,你不太可能被自己的先入爲主。當我們從VB.Net商店切換到C#商店時,我們看到類似的東西消失。它有什麼與語言和一切與開發人員被迫正確學習,而不是採取捷徑。因此,我堅持原來的建議是因爲這個原因,但無論如何,如果你喜歡VB,那就去吧。不要擔心任何人「看不起」使用它。所有這些「我的語言比你的語言更好」的東西是無稽之談。有些語言比其他語言具有優勢,但在.Net世界中,在VB和C#的辯論中,兩種語言實際上非常接近以至於沒有太大區別。這場辯論毫無意義(並長大)爲「我的爸爸可以毆打你的爸爸」的爭論。
這是錯誤的。 VB.NET和C#都「編譯」到MSIL(Microsoft中間語言)。 IronPython,F#和其他針對公共語言運行庫的其他東西也是如此。 VB.NET是「一流」語言,甚至有自己專門的開發團隊。這就是.NET的美妙之處,它將語言語法排除在外。不管你在哪裏編寫代碼,b/c最後都是MSIL。選擇你喜歡的...我更喜歡VB.NET,儘管我非常瞭解C#。 – Mick 2009-08-08 22:59:46
IronPython ...這是否意味着我可以使用Visual Studio的可視化GUI編輯器來編寫Python代碼?那將是真棒。 – 2009-08-08 23:27:08
這個主題的第一個很好的答案。 +1 – 2009-08-09 07:49:41