C#編程語(yǔ)言
C#是微軟公司在.NET框架之上而開(kāi)發(fā)的一種編程語(yǔ)言。C#的正確發(fā)音:See Sharp。
C#之前的Windows編程
20世界90年代末,在使用微軟平臺(tái)的Windows編程中,大多數(shù)程序員使用Visual Basic(VB)、C或C++。一些C和C++程序員在使用純Win32 API,但大多數(shù)人在使用MFC(Microsoft Foundation Class,微軟基礎(chǔ)類(lèi)庫(kù))。其他人已經(jīng)轉(zhuǎn)向COM(Component Object Model,組件對(duì)象模型)。
所有這些技術(shù)都有自己的問(wèn)題。純Win32 API不是面向?qū)ο蟮模沂褂盟墓ぷ髁勘仁褂肕FC的更大。MFC是面向?qū)ο蟮模撬鼌s不一致。COM概論簡(jiǎn)單,但代碼復(fù)雜且不夠優(yōu)雅。
所有這些編程技術(shù)還有一個(gè)共同的缺點(diǎn)就是它們主要是針對(duì)桌面程序,而沒(méi)有考慮到Internet開(kāi)發(fā)。
C#的制定
C#的制定目標(biāo):集成的、面向?qū)ο蟮拈_(kāi)發(fā)框架,一致且優(yōu)雅。

.NET
2002年,微軟發(fā)布了.NET框架的第一個(gè)版本。.NET框架是一種比MFC和COM編程技術(shù)更一致并面向?qū)ο蟮沫h(huán)境。它的特點(diǎn)有:
多平臺(tái) 可以在多種平臺(tái)上運(yùn)行,從服務(wù)器、桌面機(jī)到PDA,還能在移動(dòng)端運(yùn)行。
行業(yè)標(biāo)準(zhǔn) 該系統(tǒng)使用行業(yè)標(biāo)準(zhǔn)的通訊協(xié)議,比如xml、HTTP、SOAP、JSON和WSDL。
安全性 有更加安全的執(zhí)行環(huán)境。
.NET框架的組成
.NET框架由編程工具、CLR、BCL組成。主要說(shuō)說(shuō)CLR和BCL。
CLR 全稱(chēng)Common Language Runtime,公共語(yǔ)言運(yùn)行庫(kù)。主要包括的內(nèi)容有:內(nèi)存管理和垃圾收集,代碼安全驗(yàn)證,代碼執(zhí)行、線程管理及異常處理。
BCL 全稱(chēng)Base Class Library,基類(lèi)庫(kù)。是.NET框架使用的一個(gè)大的類(lèi)庫(kù)。(FCL是BCL的超級(jí),F(xiàn)CL框架類(lèi)庫(kù))。
C#的優(yōu)勢(shì)
面向?qū)ο?/u> CLR、BCL和C#完全是面向?qū)ο蟮模呒傻摹?/p>
GC垃圾收集 CLR有GC(Garbage Collector,垃圾收集器),能夠自動(dòng)管理內(nèi)存(GC自動(dòng)從內(nèi)存中刪除程序不在訪問(wèn)的對(duì)象)。
互操作性 .NET語(yǔ)言互操作性允許用不同的.NET語(yǔ)言編寫(xiě)的軟件模塊無(wú)縫的交互;允許.NET的代碼調(diào)用并非.NET的代碼,他可以使用標(biāo)準(zhǔn)Win32 DLL導(dǎo)出的純C函數(shù)的代碼;.NET框架還允許與COM進(jìn)行互操作。
基類(lèi)庫(kù) .NET提供了一個(gè)龐大的基礎(chǔ)類(lèi)庫(kù),稱(chēng)為基類(lèi)庫(kù)(Base Class Library,BCL)。(有時(shí)稱(chēng)為框架類(lèi)庫(kù)--Framwork Class Library,F(xiàn)CL)。
編譯成CIL
.NET語(yǔ)言的編譯器接受源代碼文件,并生成名為程序集的輸出文件。

編譯成本機(jī)代碼并執(zhí)行
程序的CIL直到它被調(diào)用運(yùn)行時(shí)才會(huì)被編譯成本機(jī)代碼。CLR執(zhí)行步驟:檢查程序集的安全特性;在內(nèi)存中分配空間;把程序集中的可執(zhí)行代碼發(fā)送給實(shí)時(shí)(Just-in-Time,JIT)編譯器,把其中的一部分編譯成本機(jī)代碼。
一旦CIL被編譯成本機(jī)代碼,CLR就在它運(yùn)行時(shí)管理它,執(zhí)行像釋放沒(méi)使用的內(nèi)存、檢查數(shù)組邊界、檢查參數(shù)類(lèi)型和管理異常之類(lèi)的任務(wù)。有兩個(gè)重要術(shù)語(yǔ):托管代碼--為.NET框架編寫(xiě)的代碼稱(chēng)為托管代碼(managed code),需要CLR;非托管代碼--不在CLR控制之下運(yùn)行的代碼,比如win32 C/C++ DLL,稱(chēng)為非托管代碼(unmanaged code)。
微軟公司還提供了一個(gè)稱(chēng)為本機(jī)映像生成器的工具Ngen,可以把一個(gè)程序集轉(zhuǎn)換成當(dāng)前處理器的本機(jī)代碼。經(jīng)過(guò)Ngen處理過(guò)的代碼免除了運(yùn)行時(shí)的JIT編譯過(guò)程。
編譯和執(zhí)行
無(wú)論原始文件的語(yǔ)言是什么,都遵循同樣的編譯和執(zhí)行過(guò)程。

CLR
.NET框架的核心組件就是CLR,它在操作系統(tǒng)的頂層,負(fù)責(zé)管理程序的執(zhí)行。

CLI
CLI(Common Language Infrastructure,公共語(yǔ)言基礎(chǔ)結(jié)構(gòu))把所有.NET框架的組件連結(jié)成一個(gè)內(nèi)聚的、一致的系統(tǒng)。

CLI主要由CTS(Common Type System,公共類(lèi)型系統(tǒng),定義了那些在拓公關(guān)代碼中一定會(huì)使用的類(lèi)型特征)、CLS(Common Language Specification,公共語(yǔ)言規(guī)范,詳細(xì)說(shuō)明了一個(gè).NET兼容編程語(yǔ)言的規(guī)則、屬性和行為,其主體包括數(shù)據(jù)類(lèi)型、類(lèi)結(jié)構(gòu)和參數(shù)傳遞)組成。
C#的一些縮寫(xiě)和版本更新
縮寫(xiě):

版本更新:

推薦書(shū)籍 C#圖解教程(C#5.0)第4版 【下載】
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注