從安全視角切入,系統性梳理 .NET 4.0 執行環境核心支柱,釐清各層職責與交互關係。

圖 1 CTS 型別階層:所有型別繼承自 System.Object
| 分類 | 儲存位置 | 包含型別 |
|---|---|---|
| 實值型別 | 堆疊 | 簡單型別、結構、列舉 |
| 參考型別 | 受控堆積 | 類別、介面、陣列、委派、裝箱實值型別 |
int i = 10; object obj = i; // 裝箱:實值型別 → 參考型別 (堆積配置) int j = (int)obj; // 拆箱:參考型別 → 實值型別
IL 碼對應:box / unbox.any 指令。

圖 2 CTS ⊃ CLS:CLS 是所有語言必須支援的最小特性集
[assembly: CLSCompliant(true)] 指示編譯器檢查違規public UInt32 回傳值、僅大小寫不同的公開成員 (Abc/abc).method、.maxstack),其餘為操作碼| 層級 | 範圍 | 代表命名空間 |
|---|---|---|
| BCL (基礎類別庫) | 核心型別、集合、IO、反射、安全、執行緒 | System、System.Collections、System.IO |
| FCL (架構類別庫) | BCL + ASP.NET、ADO.NET、WinForms、WPF、WCF、WF 等應用框架 | System.Web、System.Data、System.Windows |
| 模式 | 時機 | 優點 | 缺點 |
|---|---|---|---|
| JIT (Just-In-Time) | 方法首次呼叫時 | 啟動快、僅編譯用到的碼、可針對當前 CPU 優化 | 首次呼叫有延遲 |
| NGEN (預編譯) | 安裝/部署時 | 無 JIT 延遲、共用原生映像跨進程 | 部署複雜、無法針對運行 CPU 微調、需管理原生映像快取 |
dynamic 關鍵字System.Dynamic、Microsoft.Scripting安全啟示:CLR 以中繼資料驅動的型別安全、代碼存取安全性 (CAS)、應用程式域隔離,構成 .NET 安全防禦的三道防線。
作者:玄魂
出處:https://www.cnblogs.com/xuanhun/