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個開源的架構在提供有限的支援:
http://www.mono-project.com - 支援各種版本的Linux、Win32以及Mac OS X
http://www.dotgnu.org/ - 支援Win32, AIX, BeOS, Mac OS X, Solaris and Linux