江西南昌北大青鳥ASP.技術培訓
1什么是 CLS?
CLS = mon Language Specification—通用語言規范。它是預計所有 . 語言都支持的一個 CTS 的子集。這一思想是讓使用 CLS-相容類型的任何程序和以任何語言編寫的 . 程序可以互相操作。
理論上它能允許在不同的 . 語言之間有緊密的互操作性—例如允許從一個 VB 類里繼承一個 C# 類。
2、什么是 CTS?
CTS = mon Type System—通用類型系統。它是指 . 運行庫所理解、并且隨后 . 應用程序可以使用的一系列類型。然而,注意不是所有的 . 語言都將支持 CTS 中的所有類型。CTS 是 CLS 的超集。
3、什么是 CLR?
CLR = mon Language Runtime—通用語言運行庫。CLR 是一組標準資源集合,無論編程語言是什么,所有 (理論上) . 程序都能從中獲益。Robert Schmidt (Microsoft) 在他的 MSDN PDC# 文章 中列出了以下 CLR 資源:
面向對象的編程模型 (繼承、多態、異常處理、垃圾收集)
安全模型
類型系統
所有的 . 基礎類
許多 . 框架類
開發、調試和測評工具
運行和代碼管理
IL-機器語言 轉換器和優化器
這些的含義是,在 . 世界里,不同的編程語言將在能力上比過去任何時候都更平等,雖然顯然不是所有語言都支持所有 CLR 服務。
4、什么是映像?
所有的 . 編譯器都產生關于它們所產生的模塊中的類型定義的特殊數據。這些特殊數據同模塊封裝在一起 (隨后模塊被封裝到元件中),可以通過稱為映像 的機制來訪問。System.Reflection 命名空間中包含向模塊或元件詢問其類型的類。
使用映像來訪問 . 的特殊數據同使用 ITypeLib/ITypeInfo 來訪問 中的類型庫數據非常相似,而且使用的目的也很相似—例如確定數據類型大小,以便在上下文、進程、機器的邊界間調度它們。
映像還可以被用來動態調用方法 (參見 System.Type.InvokeMember),甚至在運行時動態創建類型 (參見 System.Reflection.Emit.TypeBuilder )。
5、什么是 C#?
C# 是在 . 框架中運行的一種新語言。在他們的“C# 簡介”白皮書中,Microsoft 這樣描述 C#:
“C# 是從 C 和 C++ 派生出來的一種簡單的、面向對象的、并且是類型安全的現代編程語言。C# (發音為‘C sharp’) 牢固地根植于在 C 和 C++ 家族之樹,將很快為 C 和 C++ 程序員所熟悉。C# 幫助開發者將 Visual Basic 的高生產率和 C++ 的直接控制能力結合起來。”
將以上引言中的“C#”換成“Java”,你會發現這句陳述依然很正確。
6 、什么是 IL?
IL = Intermediate Language—中間語言。又稱為 MSIL。所有 . 源代碼 (使用任何語言) 被編譯為 IL。然后在軟件的安裝點上或者運行時,IL 由即時 (JIT) 編譯器轉換為機器碼。
7 、在 . 范疇里,“被管理”是什么含義?
術語“被管理”導致了很多誤解。在 . 里的不同地方都使用了它,分別指相互差別不大的不同東西。
被管理代碼:. 框架為運行在其上的程序提供了幾個核心的運行服務—例如異常處理和安全性。為使這些服務能工作,代碼必須提供運行時的*程度的一些信息。這樣的代碼被稱為被管理代碼。默認情況下,所有 C#、Visual Basic. 和 JScript. 代碼都是被管理代碼。如不指明,VS7 C++ 代碼不是被管理代碼,但能通過一個命令行開關 (/+) 使編譯器產生被管理代碼。
被管理數據:是指由 . 運行庫的垃圾收集器分配和回收的數據。C#、VB. 和 JScript. 數據總是被管理的。即使使用了 /+ 開關,默認情況下 VS7 C++ 數據也不是被管理的,但可以使用 __gc 關鍵字將其指定為被管理數據。
被管理類:通常在 C++ 的 Managed Extensions (ME) 范疇中涉及。使用 ME C++ 時,可以用 __gc 關鍵字將其指定為被管理的。名副其實,該類的實例所占用的內存由垃圾收集器管理,但還不止如此。該類還成為了完全的 . 團體的成員,同時帶來了好處和限制。好處之一是獲得了與其它語言編寫的類之間的互操作性—例如,一個被管理 C++ 類可以繼承 VB 類。限制之一是被管理類只能繼承一個基類。