C#是三大主流OOP(面向對象編程)語言(C++,Java,C#)之一,學習了幾天的C#,發現它與C之間的一些差別,暫且記下,其中肯定有不足和遺漏之處,以后再補充糾正。
C語言誕生得非常之早,C語言的目標就是比匯編方便易用,同時不要損失匯編的表達能力。所以C語言可以看成是“高級的匯編”語言。C語言的源代碼基本上可以非常容易地對應到匯編代碼,而且可以不需要什么運行時環境的支持。C的特點,簡單容易編譯,靈活貼近底層。所以一直到現在,一些需要直接和硬件打交道的軟件都還是用C語言寫的。總之C語言編寫簡單,更接近底層,直觀得管理數據存儲。
C#語言抽象層次高且基本只有一種(面向對象的),運行時支持豐富(垃圾回收等),類庫豐富。所以它就是好學,易用,同時兼顧運行效率,盡量優化。C#與Java類似,編譯后得到的還不是機器代碼,而是運行在虛擬機中的元指令。它對安全性做了更多的考慮,沒有指針,不能直接操作內存,自動實現內存管理。
最直觀的區別就是:C#沒有指針類型,內存自動管理;C#有字符串類型,C語言沒有,靠字符數組或指針來存字符串;C#中switch后可跟string類型,並且會禁止所有switch..case語句的失敗情形,除非case語句后是空格,否則執行了前一個case語句就算沒有break也會停止執行后面的case語句; C#中定義數組時,數組長度可以是變量,而C語言中定義時數組長度只能是一個常量表達式,動態分配內存需要用到molla函數;C語言中沒有集合類型;C#有foreach可用於數組和集合的遍歷等...
總的來說,C語言更底層,很多東西都需要自己DIY,但極其靈活,功能十分強大,其精華在於指針,直接管理數據存儲,面向過程編程,很多操作系統和系統軟件都是用C語言寫的;C#則更容易上手,很多東西都已經寫好,直接使用即可,避免了內存的直接管理,面向對象編程;正如一個冷笑話所講:“C語言:指針最好用。 C++:最好不用指針。 C#:指針是什么?”