C#與C++重要區別
阿新 • • 發佈:2019-02-12
1.繼承:C++支援多繼承,C#類只能繼承一個基類中的實現但可以實現多個介面。
2.陣列:宣告 C# 陣列和宣告 C++ 陣列的語法不同。在 C# 中,“[]”標記出現在陣列型別的後面。
3.資料型別:在C++中bool類可以與整型轉換,但C#中bool 型別和其他型別(特別是 int)之間沒有轉換。long 型別:在 C# 中,long 資料型別為 64 位,而在 C++ 中為 32 位。
4.struct 型別:在 C# 中,類和結構在語義上不同。struct 是值型別,而 class 是引用型別。
5.switch 語句:與 C++ 中的 switch 語句不同,C# 不支援從一個 case 標籤貫穿到另一個 case 標籤。
6.delegate 型別:委託與 C++ 中的函式指標基本相似,但前者具有型別安全,是安全的。
7.從派生類呼叫重寫基類成員。 base
8.使用 new 修飾符顯式隱藏繼承成員。
9.重寫方法需要父類方法中用virtual聲名,子類方法用override 關鍵字。
10.前處理器指令用於條件編譯。C# 中不使用標頭檔案。 C# 前處理器指令
11.異常處理:C#中引入了 finally 語句,這是C++沒有的。
12.C# 運算子:C# 支援其他運算子,如 is 和 typeof。它還引入了某些邏輯運算子的不同功能。
13. static 的使用,static方法只能由類名呼叫,改變static變數。
14.在構造基類上替代 C++ 初始化列表的方法。
15.Main 方法和 C++ 及Java中的 main 函式的宣告方式不同,Main而不能用main
16.方法引數:C# 支援 ref 和 out 引數,這兩個引數取代指標通過引用傳遞引數。
17.在 C# 中只能在unsafe不安全模式下才使用指標。
18.在 C# 中以不同的方式執行過載運算子。
19.字串:C# 字串不同於 C++ 字串。
20.foreach:C#從VB中引入了foreach關鍵字使得以迴圈訪問陣列和集合。
21.C# 中沒有全域性方法和全域性變數:方法和變數必須包含在型別宣告(如 class 或 struct)中。
22.C# 中沒有標頭檔案和 #include 指令:using 指令用於引用其他未完全限定型別名的名稱空間中的型別。
23.C# 中的區域性變數在初始化前不能使用。
24解構函式:在 C# 中,不能控制解構函式的呼叫時間,原因是解構函式由垃圾回收器自動呼叫。 解構函式
25建構函式:與 C++ 類似,如果在 C# 中沒有提供類建構函式,則為您自動生成預設建構函式。該預設建構函式將所有欄位初始化為它們的預設值。
26.在 C# 中,方法引數不能有預設值。如果要獲得同樣的效果,需使用方法過載。
其實有很多相通的地方。希望對你有所幫助。
2.陣列:宣告 C# 陣列和宣告 C++ 陣列的語法不同。在 C# 中,“[]”標記出現在陣列型別的後面。
3.資料型別:在C++中bool類可以與整型轉換,但C#中bool 型別和其他型別(特別是 int)之間沒有轉換。long 型別:在 C# 中,long 資料型別為 64 位,而在 C++ 中為 32 位。
4.struct 型別:在 C# 中,類和結構在語義上不同。struct 是值型別,而 class 是引用型別。
5.switch 語句:與 C++ 中的 switch 語句不同,C# 不支援從一個 case 標籤貫穿到另一個 case 標籤。
6.delegate 型別:委託與 C++ 中的函式指標基本相似,但前者具有型別安全,是安全的。
7.從派生類呼叫重寫基類成員。 base
8.使用 new 修飾符顯式隱藏繼承成員。
9.重寫方法需要父類方法中用virtual聲名,子類方法用override 關鍵字。
10.前處理器指令用於條件編譯。C# 中不使用標頭檔案。 C# 前處理器指令
11.異常處理:C#中引入了 finally 語句,這是C++沒有的。
12.C# 運算子:C# 支援其他運算子,如 is 和 typeof。它還引入了某些邏輯運算子的不同功能。
13. static 的使用,static方法只能由類名呼叫,改變static變數。
14.在構造基類上替代 C++ 初始化列表的方法。
15.Main 方法和 C++ 及Java中的 main 函式的宣告方式不同,Main而不能用main
16.方法引數:C# 支援 ref 和 out 引數,這兩個引數取代指標通過引用傳遞引數。
17.在 C# 中只能在unsafe不安全模式下才使用指標。
18.在 C# 中以不同的方式執行過載運算子。
19.字串:C# 字串不同於 C++ 字串。
20.foreach:C#從VB中引入了foreach關鍵字使得以迴圈訪問陣列和集合。
21.C# 中沒有全域性方法和全域性變數:方法和變數必須包含在型別宣告(如 class 或 struct)中。
22.C# 中沒有標頭檔案和 #include 指令:using 指令用於引用其他未完全限定型別名的名稱空間中的型別。
23.C# 中的區域性變數在初始化前不能使用。
24解構函式:在 C# 中,不能控制解構函式的呼叫時間,原因是解構函式由垃圾回收器自動呼叫。 解構函式
25建構函式:與 C++ 類似,如果在 C# 中沒有提供類建構函式,則為您自動生成預設建構函式。該預設建構函式將所有欄位初始化為它們的預設值。
26.在 C# 中,方法引數不能有預設值。如果要獲得同樣的效果,需使用方法過載。
其實有很多相通的地方。希望對你有所幫助。