C++開發人員快速學習C#

來源:互聯網
上載者:User
下表包含 C# 和本機 C++(它不使用 /clr)之間的重要比較資訊。如果您是一位 C++ 程式員,此表將為您提供這兩種語言的最重要差異。

功能
繼承:在 C++ 中,類和結構實際上是相同的,而在 C# 中,它們很不一樣。C# 類可以實現任意數量的介面,但只能從一個基類繼承。而且,C# 結構不支援繼承,也不支援顯式預設建構函式(預設情況下提供一個)。
數組:在 C++ 中,數組只是一個指標。在 C# 中,數組是包含方法和屬性的對象。例如,可通過 Length 屬性查詢數組的大小。C# 數組還使用索引器(驗證用於訪問數組的各個索引)。聲明 C# 數組的文法不同於聲明 C++ 數組的文法:在 C# 中,“[]”標記出現在數群組類型之後,而非變數之後。
布爾值:在 C++ 中,bool 類型實質上是一個整數。在 C# 中,不存在 bool 類型與其他類型之間的相互轉換。
long 類型:long 類型在 C# 中為 64 位元,而在 C++ 中為 32 位。
傳遞參數:在 C++ 中,除非顯式通過指標或引用傳遞,否則所有變數都通過值傳遞。在 C# 中,除非顯式通過具有 ref 或 out 參數修飾符的引用傳遞,否則類通過引用傳遞,而結構通過值傳遞。
switch 語句:與 C++ 中的 switch 語句不同,C# 不支援從一個 case 標籤貫穿到另一個 case 標籤。
委託:C# 委託大致類似於 C++ 中的函數指標,是型別安全和可靠的。
基類方法:C# 支援用於調用衍生類別中重寫基類成員的 base 關鍵字。而且,在 C# 中,使用 override 關鍵字重寫虛擬或抽象方法是顯式的。
方法隱藏:C++ 通過繼承支援方法的隱式“隱藏”。在 C# 中,必須使用 new 修飾符來顯式隱藏繼承的成員。
前置處理器指令用於條件編譯。C# 中不使用標頭檔。
異常處理:C# 為無論是否引發異常都應執行的代碼提供 finally 關鍵字。
C# 運算子:C# 支援其他運算子,如 is 和 typeof。它還引入了某些邏輯運算子的不同功能。
typedef 關鍵字。在 C++ 中,typedef 用於為已聲明的類型建立更短或更方便的名稱。在 C# 中,using 指令提供此功能。
extern 關鍵字:在 C++ 中,extern 用於匯入類型。在 C# 中,extern 用於為使用同一程式集的不同版本建立別名。
static 關鍵字:在 C++ 中,static 既可用於聲明類級實體,也可用於聲明特定於某模組的類型。在 C# 中,static 僅用於聲明類級實體。
C# 中的 Main 方法和 C++ 中的 main 函數的聲明方式不同。在 C# 中,它是大寫的,並且始終是 static 的。此外,在 C# 中,對處理命令列參數的支援要可靠得多。
在 C# 中,只有在 unsafe 模式下才允許使用指標。
在 C# 中以不同的方式執行重載運算子。
字串:在 C++ 中,字串只是字元的數組。在 C# 中,字串是支援可靠搜尋方法的對象。
foreach 關鍵字使您可以逐一查看數組和集合。
全域:在 C# 中,不支援全域方法和全域變數。方法和變數必須包含在 class 或 struct 之內。
#define 預先處理指令:在 C++ 中, #define 指令通常用於聲明常量值。在 C# 中,#define 指令不可用於此目的。在 C# 中,最好將常量定義為枚舉類型(僅限整數值)或者定義為類或結構的靜態成員。如果具有多個像這樣的常量,可以考慮建立一個單獨的“Constants”類來儲存這些常量。
匯入類型:在 C++ 中,多個模組公用的類型放置在標頭檔中。在 C# 中,可通過中繼資料擷取此資訊。
C# 中的局部變數在初始化前不能使用。
記憶體管理:C++ 語言不提供記憶體回收功能;在進程終止前,未顯式釋放的記憶體仍保持已指派的狀態。C# 語言提供記憶體回收功能。
解構函式:C# 具有用於確定地釋放非託管資源的不同文法。
建構函式:與 C++ 類似,如果在 C# 中不提供類建構函式,則為您自動產生一個預設建構函式。該預設建構函式將所有欄位初始化為它們的預設值。
C# 不支援位域。
C# 的輸入/輸出服務和格式設定依賴於 .NET Framework 的運行庫。
在 C# 中,方法參數不能有預設值。如果要獲得同樣的效果,請使用方法重載。
在 C# 中,以類似於 C++ 範本的方式提供用於型別參數化的泛型型別和泛型方法。不過,二者有明顯區別。例如,在 C# 中,泛型型別資訊在運行時保留。
as 關鍵字與標準強制轉換類似,不同之處在於:如果轉換失敗,則傳回值為 null,而不是引發異常。這與使用 C++ 中的 static_cast(與 dynamic_cast 不同,它不執行運行時檢查,因此失敗時不引發異常)相似。

 

註:SDKhome移動平台開發的交流平台 http://www.sdkhome.com

聯繫我們

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

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

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.