c#通過底層的虛擬機機制減少了c/c++語言中常常容易發生的內存泄漏和安全性問題,代價是運行速度減慢。同樣的由於簡化了編程語言的複雜性(c#遠遠比c++來得簡單),大大提高了開發者得效率。另外c#具有.net龐大的類庫,這個優勢是c++所不具有的。因此c#非常合適開發企業中處理業務的應用程序。同時微軟所有的操作系統、服務器程序、桌面端程序都在向.net平臺統一。在歷史上與次類似的情形(指微軟技術)只有在微軟從16位平臺向32位平臺轉變的過程中發生過。因此現在.net的轉變對開發者來說可能是痛苦的(因爲要學習很多新的東西),但也充滿了機會。
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# 中,方法參數不能有默認值。如果要獲得同樣的效果,需使用方法重載。