選擇VB.Net還是C#(轉)

來源:互聯網
上載者:User
物件導向的程式設計不可避免的將會出現在.Net的世界裡。現在問題是,我們要選擇哪一種語言呢?

(飛刀前言:如果您是VB程式員,那麼本文將會為您介紹VB.Net與以前版本VB的區別,如果您是C#、C++,C,Java程式員,本文最好不要看,此文的作者的某些觀點會讓我們這些程式員吐血)

在VB.Net中,微軟給與了VB程式員們多年來夢寐以求的東東,也就是真正的物件導向的程式設計語言。也許您已經聽說了,VB.Net與他的前身VB有很大的不同,甚至您都不會認識它了。確實,他們不得不刪除了一些細小的東東,同時改變了一些對象,屬性以及方法,但是這些對一個VB程式員來說都不是什麼大問題。實際上,我認為一旦您已經能夠熟練的使用VB.Net,您會發現它比以前的VB版本更加簡單和直觀。因為在學習VB.Net的路上要走不少的彎路,所以我想您可能會對C#產生好奇心,盤算著是否需要放棄VB。
 

如果您現在已經是一個VB程式員了,而且已經有一定時間了,那麼您並不需要去選擇其它的語言,比如C#或Delphi。你會發現VB儘管已經的改變了不少,但是它的核心依在。最主要的變化存在於使用VB.Net中的對象、屬性以及方法。不論您學習哪樣.Net程式,這些都是需要重新學習的。

如果您從Dos時代便開始使用BASIC語言,那麼VB.Net將會讓你承受不小的打擊。VB.Net已經去掉了GoSub,While/Wend以及其它一些陳舊的語句。但是微軟已經發出警告,在任何情況下都不要使用非結構性語句。

VB.Net 的優勢
 

VB.Net 擁有features,而C#沒有。比如,IsDBNull()函數就只存在於VB.Net,C#中是不沒有的。

VB.Net擁有求冪函數以及重新分配數組空間的Redim ,這些C#中也沒有。C#對大小寫很敏感,而大多數的VB程式並不習慣於區分大小寫。以我個人來說,我喜歡VB中的If ....End If 以及Do ...Loop的方式,而不太喜歡C#中{}符號。Select Case語句也比C#中的switch語句更加簡單和緊湊。在C#中,你不得不使用break語句去中止查詢結構。在VB中,你能使用Case 1 to 50,但是在C#中你不得不使用50個獨立的case語句來完成。
 

當你在使用VB中面象對象的特性時,你會發現Inherits,MoustInherit,NotInheritable,Overridable以及其它一些關鍵字。在C#中,這樣的特性您不得不調用一些模糊的關鍵字和文法,比如在VB.Net中,繼承一個類,你可以這樣寫:

Public Class Person
  ...
End Class
Public Class Employee
  Inherits Person
  ...
End Class

如果使用C#就必須:

public class Person
{
  public Person() {     
     ...
  }
}
public class Employee : Person
{
    public Employee() {
     ...
    }
}

如果你不仔細,您可能會忘記使用Employee : Person文法來繼承Person類。

(飛刀註:此作者為典型的VB程式員,呵呵,沒有想到飛刀認為的C#的優點,全被此作者否定。在這些上面飛刀的個人觀點與這位作者不同,其實只要大家習慣,就會發現C#是多麼的好用。如果大家是從VB轉到C#,那麼肯定會有一些不適應,但是也沒有到全盤否定的地步,呵呵,習慣就好)

升級至VB.Net有多大困難?

從VB6.0移植至VB.Net,並非沒有挑戰必。但是這裡有些事情,我們必須事先準備好:第一,使用類,COM組件,以及遞行排列的開發技術。如果您使用這些程式開發構造,您的移植工作將會很簡單。這裡有些程式樣式並不是很容易移植的,比如非零數組,隱含變數(即沒有使用Option Explicit),以及Jet或者RDO。

介紹C#

微軟在建立C#時有兩種思想:第一,需要一個Java的競爭者,微軟需要一個絕對屬於本公司的類似於Java的語言。另外就是,微軟希望有一個全新的,整潔的語言。

C#適合於那些Java、C以及C++程式員,這些程式員已經很習慣於這種語言的結構以及對大小寫敏感的特性。他們也不得不重頭學習.Net的類庫,因此在這時們並不比VB程式員有多少優勢。
 

C#的優勢

我無可否認,是一名VB的支援者,但是C#確實存在一些優勢,比如多行注釋,以及一些代碼的簡寫:

intValue--
intValue-


其它一些C#的優點就是在Beta版文檔中,C#的資料比VB多。

儘管不會經常用於編寫商務應用程式,但是C#還是支援指標。在這個方面C#確實比VB有著一些小小的優勢。但是,在我的程式中,我很少使用指標。

(飛刀註:可能是我翻譯有錯誤,pointer是否表示指標,如果是,這位作者已經犯下一個天大的錯誤,那就是C#中並不支援指標,而且不知道這位作者是否使用過VC#,怎麼能說C#不經常編寫商務應用程式?)


C#擁有使用Unsigned資料類型的能力,同樣的,在商務應用程式中它的使用並不廣泛。
 

移植之路

從VB6.移植至VB.Net的道路並不平坦,但是我想對於想學好一門新程式語言的您來說,這份投資是值得的。在學習中,我推薦您學習面像對象的程式方式。你會經常在.Net的編程世界中經常使用到它。


相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。