[C#] C++ 和 C# 的比較

  • 14218
  • 0

摘要:[C#] C++ 和 C# 的比較

MSDN :

http://msdn.microsoft.com/zh-tw/library/aa287549%28VS.71%29.aspx

 

這邊擷取表格,詳細說明請參考 MSDN 網站。

功能 參考主題
繼承 (Inheritance):類別只能從一個基底類別 (Base Class) 繼承實作 (Implementation)。此外,類別或介面可實作多個介面。 class

interface

陣列:宣告 C# 陣列與宣告 C++ 陣列的語法不同。在 C# 中,「[]」Token 會跟在陣列型別 (Array Type) 之後出現。 陣列
bool 型別:bool 型別與其他型別 (特別是 int) 之間並無轉換。 bool
long 型別:在 C# 中,long 資料型別是 64 位元,而在 C++ 中,它是 32 位元。 long
struct 型別:在 C# 中,類別與結構 (Struct) 在語意上是不同的。結構是數值型別,而類別是參考型別。 struct

class

switch 陳述式 (Statement):不同於 C++ switch 陳述式,C# 並不支援從一個 case 標記 (Label) 往下繼續執行其他標記。 switch
delegate 型別:委派 (Delegate) 大體上與 C++ 當中的函式指標類似,但為型別安全和安全。 delegate
從衍生類別 (Derived Class) 呼叫覆寫基底類別成員。 base

請參閱 override 的範例

使用 new 修飾詞 (Modifier) 明確地隱藏繼承的成員。 new
宣告覆寫方法需有 override 關鍵字。 override
前置處理器指示詞是用於條件式編譯。C# 裡不使用標頭檔 (Header File)。 C# 前置處理器指示詞
例外處理 (Exception Handling):使用 finally 陳述式。 try-finally

try-catch-finally

C# 運算子:C# 支援額外的運算子,例如 istypeof。同時部份邏輯運算子 (Logical Operator) 也引入不同功能。 & 運算子

| 運算子

^ 運算子

is

typeof

使用 extern 關鍵字。 extern
使用 static 關鍵字。 static
類似於 C++ 初始化清單的建構基底類別的方式。 請參閱 virtual 的範例
C# 程式的一般結構:命名空間 (Namespace)、類別、結構、委派及列舉型別 (Enumeration)。 C# 程式的一般結構
Main 方法的宣告與 C++ 中的 main 函式不同。此外,比較每種語言中命令列引數的用法。 Main
方法參數:C# 支援 refout 參數,用來取代指標將參數以參考傳遞。 ref

out

C# 允許使用指標,但只在不安全的模式中使用。 unsafe
多載化 (Overloading) 運算子的執行在 C# 中不一樣。 C# 運算子
字串:C# 字串與 C++ 字串不同。 string
foreach 關鍵字允許您重複陣列和集合。 foreach、in
C# 中沒有全域方法或變數:方法及變數必須包含在型別宣告 (Type Declaration) 內 (例如 classstruct)。 C# 程式的一般結構
C# 中沒有標頭檔或 #include 指示詞:using 指示詞是用來參考其他命名空間中的型別,且不需完全符合型別名稱。 using
在 C# 中,必須初始化之後才能使用區域變數。 5. 變數
解構函式:在 C# 中,您無法控制何時呼叫解構函式 (Destructor),因為解構函式是自動由記憶體回收行程呼叫。 解構函式
建構函式:與 C++ 類似,如果您沒有提供以 C# 撰寫的類別建構函式,將會自動產生一個預設的建構函式。這個預設建構函式會將所有欄位初始化成其預設值。 執行個體建構函式

預設值表

C# 不支援位元欄位 (Bit Field)。 C++ 位元欄位
C# 輸出/輸入服務和格式化是依賴 .NET Framework 的 Run-Time 程式庫。 C# 語言教學課程

格式化數值結果表

在 C# 中,方法參數無法具有預設值。如果您要獲得同樣的效果,請使用方法多載。 編譯器錯誤 CS0241

三小俠  小弟獻醜,歡迎指教