c++和C#編程語言來說,只是它們的設計目的有所區別

c++在設計之初希望提供先進的面向對象特性,同時提供很好的性能。但是爲了保證和以往的程序、開發人員的知識兼容,c++與c語言幾乎完全兼容。c語言本身其實就是現代計算機的高級抽象,可以直接訪問地址、通過指針可以訪問幾乎任何內存地址;堆和棧的結構體現等待。當然c++也就具有了這樣的特性。隨着 c++的逐步發展,generic programming 泛型編程技術和stl標準模板庫的引入,c++和c的差異越來越大。基本上c++是爲了高效地使用面向對象技術或者泛型技術編寫大規模高性能應用程序(往往是一些相對比較底層的應用程序)而設計的。

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# 中,方法參數不能有默認值。如果要獲得同樣的效果,需使用方法重載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章