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