.NET 体系结构杂谈

Python011

.NET 体系结构杂谈,第1张

我们不能独立的使用C#语言 而必须和 net framework 一起考虑 C#编译器专门用于 net 这表示用C#编写的所有代码总在 net Framework 中运行 对于C#语言来说 可以得出两个重要的结论

C#的结构和方法论反应了 net的基础方法论

在许多的情况下 C#的特定语言功能取决于 net的功能 或者依赖于 net的基类

Microsoft 中间语言(Microsoft INtermediate Langiage) 简称 MSIL 或者 IL

通用类型系统(Common Type System)简称 CTS

公共语言规范(Common Language Specification)CLS

C#与 NET的关系

C#是专门与Microsoft的 net framework 一起使用而设计的

C#是一种基于现代面向对象设计方法的语言

C#就其本身而言只是一种语言 尽管它是用于生成面向 net环境的代码 但它本身不是 net的一部分

NET 支持的一些特性 C#不支持 而C#支持的另一些特性 而 net不支持(如运算符重载)

公共语言运行库

net Framework 的核心是其运行库的执行环境 称为公共语言运行库(CLR)或 net 运行库

通常将在CLR的控制下运行的代码称为托管代码(managed code)

在 net中编译 分为两部分

把源代码编译为Microsoft 中间语言(IL)

CLR把IL编译为平台专用代码

托管代码的优点

他们是一种低级语言 语法很简单(使用数字代码 而不是文本代码) 可以非常快速的转换为内部机器码

平台无关性(编译为中间语言就可以获得 NET平台无关性)

提高性能()

语言的互操作性(将任何一种语言编译为中间代码)

中间语言

中间语言特征

面向对象和使用接口

值类型和引用类型之间的巨大差别

强数据类型

使用异常来处理错误

使用特性

强数据类型

中间语言的一个重要方面是它基于强数据类型

我们从 net提供的 依赖于类型安全的服务站获得的好处更多 这些服务包括

语言的互操作性

垃圾收集

安全性

应用程序域

IL(中间语言)是区分大小写的

垃圾收集 处理目前代码中所有变量 检查对存储在托管堆上的对象的引用 确定哪些对象可以从代码中访问——即哪些对象有引用 没有引用的对象就不能再从代码中访问 因而被删除

lishixinzhi/Article/program/net/201311/12050

CLS,全称CommonLanguageSpecification,即公共语言规范。公共语言运行库支持的语言功能的子集,包括几种面向对象的编程语言的通用功能。符合CLS的组件和工具能够保证与其他符合CLS的组件和工具交互操作。

公共语言规范和通用类型系统一起确保语言的互操作性。所有.NET语言都应该遵循此规则才能创建与其他语言可互操作的应用程序,但要注意的是为了使各语言可以互操作,只能使用CLS所列出的功能对象。

扩展资料:

CLS适用对象

CLS规则定义了通用类型系统的子集,即所有适用于公共类型系统的规则都适用于CLS,除非CLS中定义了更严格的规则。CLS还建立了CLS遵从性要求,能帮助确定托管代码是否符合CLS以及一个给定的工具对托管代码(该代码是使用CLS功能的)开发的支持程度。

大多数由.NETFramework类库概述中的类型定义的成员也都符合CLS。但是,类库中的某些类型具有一个或多个不符合CLS的成员。这些成员能够支持CLS中没有的语言功能。