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