其中,最下层的无疑就是操作系统了。
在 .NET 框架中,运行于底层的是公共语言运行时 (CLR),它是公共语言基础设施 (CLI) 的一个实现。
在 CLR 之上,.NET 框架提供了全面、丰富的框架类库 (FCL),这些类库通过 CLR 调用操作系统的 API 实现各种功能。
框架类库致力于让开发者通过 .NET 平台编写各种各样的应用程序,并调用微软的其他产品。
这些类库中,一些基础的类组成基础类库(BCL)。
在类库之上,.NET 框架的各种语言共同实现了公共语言规范(CLS)。
甲骨文公司的 Java EE 是 .NET 平台的竞争对手之一。.NET 框架的最新版本是 4.7.1 (截至2017年底)。
Microsoft为.NET技术制定了一整套完整的规范,便是CLI(Common Language Infrastructure,公共语言基础结构,公共语言架构)。
CLI的组成:
1)CTS(Common Type System,公共类型系统)。【定义了一组丰富的内置类型,以及每种类新固有的、独有的特性;最重要的特征之一是所有类型都继承自公共的基类Object类】
2)CLS(Common Language Specification,公共语言规范)。【说明了.NET兼容编程语言的规则、属性和行为,其主题包括数据类型、类结构和参数传递】
3)CIL(Common Intermediate Language,公共中间语言)。
4)CLR(Common Language Runtime,公共语言运行库)。
5)BCL(Base Class Library,基类库)。【FCL的一个子集】
6)元数据定义、语义。
7)其他相关标准化文档、协议、规范。
Microsoft针对CLI在Windows上的完整实现便是 .NET Framework(.NET 框架)。
.NET Framework的主要组成:
1)CLR(Common Language Runtime,公共语言运行时,公共语言运行库)。【核心组件。提供服务:自动垃圾收集;安全和认证;通过访问BCL得到广泛的编程功能,如web服务和数据服务之类的功能】
2)FCL(Framework Class Library,Framework类库,框架类库)。【BCL的一个超集】
.NET Framework的优点:
1)面向对象的开发环境。【CLR、BLR和C#被设计得完全面向对象;为本地程序和分布式系统提供一致的、面向对象的编程模型;】
2)自动垃圾收集(Garbage Collection,GC)。【GC自动从内存中删除程序不在访问的对象】
4)互操作性。【不同.NET语言编写的软件模块无缝交互;平台调用(platform invoke,P/Incoke)的特性;允许与COM进行交互】
4)不需要COM(Component Object Model,组件对象模型)。
5)简化的部署。【.NET程序不需要使用注册表注册;并行执行特性】
6)类型安全性。【CLR检查并确保参数及其它数据对的类型安全】
7)基类库(Base Class Library,基类库)。有时称为框架类库(Framework Class Library,FCL)。【包括通用基础类、集合类、线程和同步类、XML类】
CLR在运行期管理程序的执行,包括以下内容:
1)内存管理。
2)代码安全验证。
3)代码执行、线程管理和异常处理。
4)垃圾收集。
CLR提供的服务:
1)内存管理。
2)异常处理。
3)自动垃圾收集。
4)管理代码的执行
5)JIT实时编译器(Just-in-Time)。
6)类加载器。【通过访问BCL得到广泛的编程功能,如web服务和数据服务之类的功能】
7)反射服务。
8)安全服务。
9)提供系统服务。
FCL的组成 或 服务:
1)基础类型。【整数、实数、字符串等类型定义】
2)数据结构封装。【集合、链表、队列、堆栈等数据类型】
3)Windows和Web等界面要素。【主要是按钮、标签、文本框、菜单等可视化控件】
4)Web Service要素。【用于Web服务的定义、描述、配置、解析等】
5)XML文档处理。【如XML文件、属性、元素、节点、读写器、解析器等类型】
6)文件的输入输出。【如驱动器、目录、文件、流、读写器等类型】
7)数据访问。【如数据连接、数据命令、数据集、数据表、记录等类型】
8)网络通信。【如主机、管道、套接字、消息等类型】
9)异常处理。【用于处理系统和应用程序所引发的各种异常】
9)类型反射。【用于获取程序集、对象、方法属性、字段等目标的元数据信息类型】
10)用于应用程序管理、操作系统功能封装、安全性控制等其他方面的类型。
1.C# 编程是基于 C 和 C++ 编程语言衍生出来的面向对象的编程语言
2.C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。
1.相同点:它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。
2.不同点:它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。
2.它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。
3.C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。
1.C#适合为独立和嵌入式的系统编写程序,
2.适用于使用复杂操作系统的大型系统
2.适用于特定应用的小型系统均。
2、一个结构体可以实现接口(interface)
3、Java的关键字import,在C#中被换成using,它起到了同样的作用。
4.类可以是抽象的和不可继承的:一个被申明成abstract的类不能被实例化,它只能被用做一个基类,C#关键字lock就像Java关键字final,它申明一个类不是抽象的,但是它也不能被用做另一个类的基类接口
5.布尔运算:条件表达式的结果是布尔数据类型,布尔数据类型是这种语言中独立的一种数据类型,从布尔类型到其他类型没有直接的转换过程,布尔常量true和false是C#中的关键字。
1.C#所开发的程序源代码并不是编译成能够直接在操作系统上执行的二进制本地代码。与Java类似,它被编译成为中间代码,然后通过.NETFramework的虚拟机——被称之为通用语言运行库(CLR)——执行。
2.所有的.Net编程语言都被编译成这种被称为MSIL(Microsoft Intermediate Language )的中间代码。
3.虽然最终的程序在表面上仍然与传统意义上的可执行文件都具有“.exe”的后缀名。但是实际上,如果计算机上没有安装.Net Framework,那么这些程序将不能够被执行。
4.在程序执行时,.Net Framework将中间代码翻译成为二进制机器码,从而使它得到正确的运行。最终的二进制代码被存储在一个缓冲区中。
5.一旦程序使用了相同的代码,那么将会调用缓冲区中的版本。这样如果一个.Net程序第二次被运行,那么这种翻译不需要进行第二次,速度明显加快。