1. CLR – Common Language Runtime 為.NET應用程序提供運行環境。定位、加載和管理.NET類型,同時也負責一些底層細節的工作,如內存管理、創建應用程序域、線程和對象上下文邊界,安全檢查等等。 2. CTS – Common Type System 完整描述了運行庫所支持的所有可能的數據類型和編程結構,指定了這些實體之間如何交互,也規定了它們在.NET元數據格式中的表示。 CTS包括5種基本類型:class, interface, enum, delegate and struct CTS可能的成員:構造器,終結器,靜態構造函數,嵌套類型,運算符,方法,屬性,索引器,字段,只讀字段,常量,事件 3. CLS – Common Language Specification 定義了一個讓所有.NET語言都支持的公共類型和編程結構的子集。這個可以說是所有語言特性的一個子集,而CTS是所有語言特性的一個合集。 CLS定義了一套規則,當程序完全遵守這套規則時,才能確保你的程序能被所有其它.NET語言正確調用。可以通過特性[assembly: System.CLSCompliant(true)]來進行CLS規則驗證。 4. BCL - Basic Class Library 所有.NET語言都可以調用的一套公共類庫,封裝了很多最基本的類型和服務。 5. Managed/Unmanaged code 運行在CLR中的代碼叫做managed code,反之稱為unmanaged code。 6. C#的優點 不需要指針 自動管理內存 - 垃圾回收機制 面向對象語言 操作符重載 支持Attribute 泛型編程更安全 匿名函數的支持 簡化的委托/事件模型 partial class 3.5支持的特性有: LINQ 匿名類型的支持 擴展方法來擴展現有類型 Lambda語法 新的初始化對象語法 7. IL, CIL或者MSIL 中間語言,或者成為公共中間語言。所有的.NET語言代碼編譯後都轉換為中間語言。目的是為了支持多語言。 8. 程序集內容 主要包含了編譯過的IL指令集、類型metadata和manifest(程序集本身的metadata)。類型metadata的作用主要是反射、對象序列化、晚期綁定、wcf以及vs的智能感知等等。manifest除了記錄本程序集的版本、模塊號之外,它還記錄了讓程序集正常運轉的外部程序集信息。 9. JIT - just in time 即時編譯器。程序運行是嘗試編譯IL指令,生成機器可識別的機器碼,並保存編譯結果。下次調用相同代碼時不需要重新編譯。 10. namespace 簡單說就是對.NET類型的分組機制。我們最常用到的系統namespace有System.Data, System.IO等等。除了System打頭的命名空間,最有用的還有以Microsoft開頭的命名空間,包含在其中的類型一般都和微軟操作系統服務相關,不能運行在其他OS上,如MAC,Linux等等。 11. 查看IL,反編譯 使用.NET自帶工具ildasm可以查看程序集IL。使用reflector可以反編譯程序集,你可以從http://www.red-gate.com/products/reflector/下載。 12. .NET的跨平台性 簡單說就是.NET是跨語言的平台,同時也支持跨平台的語言。跨語言的平台是指它支持多種編程語言,支持跨平台的語言理論上是說.NET可以在非Windows之外的OS上運行。不過,對於後者,MS本身並沒有做這個工作,僅僅有2個開源的架構在提供有限的支持: