江西南昌北大青鸟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 类。限制之一是被管理类只能继承一个基类。