C#編程語言
C#是微軟公司在.NET框架之上而開發的一種編程語言。C#的正確發音:See Sharp。
C#之前的Windows編程
20世界90年代末,在使用微軟平臺的Windows編程中,大多數程序員使用Visual Basic(VB)、C或C++。一些C和C++程序員在使用純Win32 API,但大多數人在使用MFC(Microsoft Foundation Class,微軟基礎類庫)。其他人已經轉向COM(Component Object Model,組件對象模型)。
所有這些技術都有自己的問題。純Win32 API不是面向對象的,而且使用它的工作量比使用MFC的更大。MFC是面向對象的,但是它卻不一致。COM概論簡單,但代碼復雜且不夠優雅。
所有這些編程技術還有一個共同的缺點就是它們主要是針對桌面程序,而沒有考慮到Internet開發。
C#的制定
C#的制定目標:集成的、面向對象的開發框架,一致且優雅。
.NET
2002年,微軟發布了.NET框架的第一個版本。.NET框架是一種比MFC和COM編程技術更一致并面向對象的環境。它的特點有:
多平臺 可以在多種平臺上運行,從服務器、桌面機到PDA,還能在移動端運行。
行業標準 該系統使用行業標準的通訊協議,比如xml、HTTP、SOAP、JSON和WSDL。
安全性 有更加安全的執行環境。
.NET框架的組成
.NET框架由編程工具、CLR、BCL組成。主要說說CLR和BCL。
CLR 全稱Common Language Runtime,公共語言運行庫。主要包括的內容有:內存管理和垃圾收集,代碼安全驗證,代碼執行、線程管理及異常處理。
BCL 全稱Base Class Library,基類庫。是.NET框架使用的一個大的類庫。(FCL是BCL的超級,FCL框架類庫)。
C#的優勢
面向對象 CLR、BCL和C#完全是面向對象的,高集成的。
GC垃圾收集 CLR有GC(Garbage Collector,垃圾收集器),能夠自動管理內存(GC自動從內存中刪除程序不在訪問的對象)。
互操作性 .NET語言互操作性允許用不同的.NET語言編寫的軟件模塊無縫的交互;允許.NET的代碼調用并非.NET的代碼,他可以使用標準Win32 DLL導出的純C函數的代碼;.NET框架還允許與COM進行互操作。
基類庫 .NET提供了一個龐大的基礎類庫,稱為基類庫(Base Class Library,BCL)。(有時稱為框架類庫--Framwork Class Library,FCL)。
編譯成CIL
.NET語言的編譯器接受源代碼文件,并生成名為程序集的輸出文件。
編譯成本機代碼并執行
程序的CIL直到它被調用運行時才會被編譯成本機代碼。CLR執行步驟:檢查程序集的安全特性;在內存中分配空間;把程序集中的可執行代碼發送給實時(Just-in-Time,JIT)編譯器,把其中的一部分編譯成本機代碼。
一旦CIL被編譯成本機代碼,CLR就在它運行時管理它,執行像釋放沒使用的內存、檢查數組邊界、檢查參數類型和管理異常之類的任務。有兩個重要術語:托管代碼--為.NET框架編寫的代碼稱為托管代碼(managed code),需要CLR;非托管代碼--不在CLR控制之下運行的代碼,比如win32 C/C++ DLL,稱為非托管代碼(unmanaged code)。
微軟公司還提供了一個稱為本機映像生成器的工具Ngen,可以把一個程序集轉換成當前處理器的本機代碼。經過Ngen處理過的代碼免除了運行時的JIT編譯過程。
編譯和執行
無論原始文件的語言是什么,都遵循同樣的編譯和執行過程。
CLR
.NET框架的核心組件就是CLR,它在操作系統的頂層,負責管理程序的執行。
CLI
CLI(Common Language Infrastructure,公共語言基礎結構)把所有.NET框架的組件連結成一個內聚的、一致的系統。
CLI主要由CTS(Common Type System,公共類型系統,定義了那些在拓公關代碼中一定會使用的類型特征)、CLS(Common Language Specification,公共語言規范,詳細說明了一個.NET兼容編程語言的規則、屬性和行為,其主體包括數據類型、類結構和參數傳遞)組成。
C#的一些縮寫和版本更新
縮寫:
版本更新:
推薦書籍 C#圖解教程(C#5.0)第4版 【下載】
新聞熱點
疑難解答