C#是三大主流OOP(面向?qū)ο缶幊?語言(C++,Java,C#)之一,它與C之間的一些差別。
C語言誕生得非常之早,C語言的目標就是比匯編方便易用,同時不要損失匯編的表達能力。所以 C 語言可以看成是“高級的匯編”語言。C語言的源代碼基本上可以非常容易地對應到匯編代碼,而且可以不需要什么運行時環(huán)境的支持。C的特點,簡單容易編譯,靈活貼近底層。所以一直到現(xiàn)在,一些需要直接和硬件打交道的軟件都還是用 C 語言寫的??傊?C 語言編寫簡單,更接近底層,直觀得管理數(shù)據(jù)存儲。
C#語言抽象層次高且基本只有一種(面向?qū)ο蟮模\行時支持豐富(垃圾回收等),類庫豐富。所以它就是好學,易用,同時兼顧運行效率,盡量優(yōu)化。C# 與 Java 類似,編譯后得到的還不是機器代碼,而是運行在虛擬機中的元指令。它對安全性做了更多的考慮,沒有指針,不能直接操作內(nèi)存,自動實現(xiàn)內(nèi)存管理。
最直觀的區(qū)別就是:C# 沒有指針類型,內(nèi)存自動管理;C# 有字符串類型,C 語言沒有,靠字符數(shù)組或指針來存字符串;C# 中 switch 后可跟 string 類型,并且會禁止所有 switch..case 語句的失敗情形,除非 case 語句后是空格,否則執(zhí)行了前一個case語句就算沒有 break 也會停止執(zhí)行后面的 case 語句; C# 中定義數(shù)組時,數(shù)組長度可以是變量 ,而 C 語言中定義時數(shù)組長度只能是一個常量表達式,動態(tài)分配內(nèi)存需要用到 molla 函數(shù);C 語言中沒有集合類型;C# 有 foreach 可用于數(shù)組和集合的遍歷等。
總的來說,C 語言更底層,很多東西都需要自己 DIY,但極其靈活,功能十分強大,其精華在于指針,直接管理數(shù)據(jù)存儲,面向過程編程,很多操作系統(tǒng)和系統(tǒng)軟件都是用 C 語言寫的;C# 則更容易上手,很多東西都已經(jīng)寫好,直接使用即可,避免了內(nèi)存的直接管理,面向?qū)ο缶幊?;正如一個冷笑話所講:“C 語言:指針最好用。 C++:最好不用指針。 C#:指針是什么?”
=================================================
一、難易程度的區(qū)別。
c# 屬于 .net framework 中的一個產(chǎn)品,簡單易用,但開發(fā)出來的東西目前還需要安裝運行庫才能供別人使用。c 語言是一種古老難用的語言,目前可能在嵌入式系統(tǒng)用的比較多,另外大學會有這門課。相關的還有 c++,可以做系統(tǒng)的底層開發(fā),也不容易掌握。
二、內(nèi)容上的區(qū)別。
C 語言面向過程,開發(fā)非托管程序,編譯成 exe是二進制可執(zhí)行文件,不可跨平臺。C# 面向?qū)ο?開發(fā)托管程序,編譯成 exe 是中間語言,需要在 .NET 平臺上進行二次動態(tài)編譯,之后才能執(zhí)行,可跨平臺。
三、特點上的區(qū)別。
C 語言誕生得非常早,當時人們普遍還習慣用匯編語言編寫軟件,而且沒有什么統(tǒng)一,通用的操作系統(tǒng),基本上軟件都是從0開始寫的。C# 是一種安全的、穩(wěn)定的、簡單的、優(yōu)雅的,由 C 和 C++ 衍生出來的面向?qū)ο蟮木幊陶Z言。它在繼承 C 和 C++ 強大功能的同時去掉了一些它們的復雜特性。
===========================================================
C:面向過程,語法太麻煩,但對硬件的底層編程和對內(nèi)存的管理的靈活性方面c是其他高級語言所不可及的。
C#:純面向?qū)ο蟮模ǜ?java 很像),是 ms .net framework 的主力之一,它的代碼運行是安全的,里面沒有指針和引用,像 java 一樣有垃圾回收機制。
語法基本沒有區(qū)別,首先 C# 不必對指針進行太多的研究,然后可遺址性等,其它的區(qū)別相當大??梢哉f不是一個方向的。
開發(fā)環(huán)境跟開發(fā)語言也是兩個不同的概念
學習 C# 并不必須有 C 語言的基礎,不過,如果你學過 C 語言,那會事半功倍的,因為他們之間有很多語法是一樣的。作為初學者,并沒有必要先去學習 C 語言,你只需要有 C# 的完整的教程就行了。