摘要:[C#] C++ 和 C# 的比較
MSDN :
http://msdn.microsoft.com/zh-tw/library/aa287549%28VS.71%29.aspx
這邊擷取表格,詳細說明請參考 MSDN 網站。
功能 | 參考主題 |
---|---|
繼承 (Inheritance):類別只能從一個基底類別 (Base Class) 繼承實作 (Implementation)。此外,類別或介面可實作多個介面。 | class |
陣列:宣告 C# 陣列與宣告 C++ 陣列的語法不同。在 C# 中,「[]」Token 會跟在陣列型別 (Array Type) 之後出現。 | 陣列 |
bool 型別:bool 型別與其他型別 (特別是 int) 之間並無轉換。 | bool |
long 型別:在 C# 中,long 資料型別是 64 位元,而在 C++ 中,它是 32 位元。 | long |
struct 型別:在 C# 中,類別與結構 (Struct) 在語意上是不同的。結構是數值型別,而類別是參考型別。 | struct |
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 |
C# 運算子:C# 支援額外的運算子,例如 is 和 typeof。同時部份邏輯運算子 (Logical Operator) 也引入不同功能。 | & 運算子 |
使用 extern 關鍵字。 | extern |
使用 static 關鍵字。 | static |
類似於 C++ 初始化清單的建構基底類別的方式。 | 請參閱 virtual 的範例 |
C# 程式的一般結構:命名空間 (Namespace)、類別、結構、委派及列舉型別 (Enumeration)。 | C# 程式的一般結構 |
Main 方法的宣告與 C++ 中的 main 函式不同。此外,比較每種語言中命令列引數的用法。 | Main |
方法參數:C# 支援 ref 和 out 參數,用來取代指標將參數以參考傳遞。 | ref out |
C# 允許使用指標,但只在不安全的模式中使用。 | unsafe |
多載化 (Overloading) 運算子的執行在 C# 中不一樣。 | C# 運算子 |
字串:C# 字串與 C++ 字串不同。 | string |
foreach 關鍵字允許您重複陣列和集合。 | foreach、in |
C# 中沒有全域方法或變數:方法及變數必須包含在型別宣告 (Type Declaration) 內 (例如 class 或 struct)。 | C# 程式的一般結構 |
C# 中沒有標頭檔或 #include 指示詞:using 指示詞是用來參考其他命名空間中的型別,且不需完全符合型別名稱。 | using |
在 C# 中,必須初始化之後才能使用區域變數。 | 5. 變數 |
解構函式:在 C# 中,您無法控制何時呼叫解構函式 (Destructor),因為解構函式是自動由記憶體回收行程呼叫。 | 解構函式 |
建構函式:與 C++ 類似,如果您沒有提供以 C# 撰寫的類別建構函式,將會自動產生一個預設的建構函式。這個預設建構函式會將所有欄位初始化成其預設值。 | 執行個體建構函式 |
C# 不支援位元欄位 (Bit Field)。 | C++ 位元欄位 |
C# 輸出/輸入服務和格式化是依賴 .NET Framework 的 Run-Time 程式庫。 | C# 語言教學課程 |
在 C# 中,方法參數無法具有預設值。如果您要獲得同樣的效果,請使用方法多載。 | 編譯器錯誤 CS0241 |
三小俠 小弟獻醜,歡迎指教