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個開源的架構在提供有限的支持: