知其然更要知其所以然!!!!!
1: 关于.Framework :
.net包括有执行平台,新的语言及大量的可扩充的类库(作用同MFC:微软基类:Microsoft Foundation Class);
.net Framework是一组系统服务,类及数据类型能提高开发人员的开发效率,并且能够容易地使用Windows
操作系统所提供的一组底层功能。
2:CLR具有的功能:
通过类型检查,内存管理,无用单元回收及异常处理管理运行的代码
提供能够提高类型安全的通用类型系统,从而使代码更稳定
提供访问系统资源的功能,包括WindowsAPI和COM InterOp服务
提供跨语言支持,包括统一的异常处理和跨语言的调试
3:CTS: 通用类型系统
通用类型系统定义了标准的,面向对象的数据类型和值类型,所有.NET编程语言支持这些类型。
实际上正是CTS才使net能够提供统一的编程模式,并能支持多种编程语言,而且CLS也是使不同编程语言能够互用的
根本语言。
4:c#中的String与String!!!!!
在c#语言中,string关键字正好映射为System.String类型,因此两者没有区别。!!!
如:float System.Single
double System.Double
Bool System.Boolean
int System.Int32
long System.Int64
short System.Int16
-----------------------------------------------------------------------------------------------------------
5: 为什么说C#中的类型是安全的? *************
类型安全应该算是CLR最重要的特性之一了,在运行时,CLR总是知道一个对象的类型。在C#中可以调用GetType()来返回调用对象的类型,并且由于GetType()继承于System.Object对象,并且为非虚的方法,所以一个类型不可能通过重写此方法而伪装成另一种类型。
由于在开发的过程中,经常会需要将一个对象从一种类型转换为其他的类型,所以CLR允许将一个对象强制转换成它本身所引用的类型或派生其的基类型。一个对象向其父类的转换CLR认为是一种安全的隐式转换,不需要任何特殊的然而需要将一个对象转换为其派生类型时,则需要进行显示的转换,因为这样的转换可能在运行时失败。
------------------------------------------------------------------------------------------------------------
6:关于元数据: **********************************************
元数据是一组信息,是程序集代码的结构化描述。
CLR在提供编译和运行服务时必须要使用这些信息,编译和运行的服务包括:
a: 装入类文件
b:内存管理
c:调试
d:对象浏览
e:将MSIL翻译成本机代码。
元数据作为.Net组件的一部分与组件源代码保存在一起。从而使.Net组件具有自我描述性,组件无须在注册表中注册,因而可使Net应用程序的部署和安装特别容易。
元数据极为重要,配置文件,设计器,调试器,反射,类型浏览器,模式生成器都需要参照组件中的元数据。
----------------------元数据内容--------------------------
1:程序集描述(部署单元)
标示:名称,版本及语言信息;
与其他程序集的依赖信息;
运行程序集所需的安全许可。
2:类型描述:
基类和接口
3:自定义属性
用户定义的属性;
编译器定义的属性;
Framework定义的属性。
--------------------------------------------------------------------------
元数据的生成:
编译器从基于组件的源代码生成组件的元数据,并以只读PE文件格式将元数据与编译的组件一起保存。可以用SDK中的反编译工具进行具体查看。
-----------------------------------------------------------------------------------------------------
7:关于通用语言规范CLS
CLS定义了各种语言在NET中互用所必须遵从的约定,CLS定义了从接口成员的命名约定到管理方法重载的规则。CTS规定了数据类型的一致性,CTS为CLS中的一部分存在。
例如为了能够互用,CLS规定:
公共标识符要区分大小写
属性和事件必须遵守雅阁的命名规则。
所有指针必须是可约束的,所有引用必须类型化,否则不能通过校验。
8:CLR 公共语言运行时
CLR为ijianhua应用程序开发及代码重用,提供了更高层次的支持,同时CLR又提供了大量的运行时服务,包括编译,无用单元回收及内存管理。
---------------------------------
CLR的结构为:从上到下:
基类库支持
线程支持 COM调度器
类型检查器 异常管理器
安全引擎 调试引擎
IL到本机代码的翻译器 代码管理器 无用单元回收器
类加载器
-----------------------------------------------------------------------------------------------------------
9: CLR下的内存管理
(无用单元回收器)GC:负责清空所有应用程序不再引用的对象,并释放它们所占用的内存空间。
* 一般情况下,托管代码不会出现内存泄漏现象,偶然情况下也会出现没有适当处理的对象,此时,尽管应用程序不再引用这些对象,但它们仍驻留在内存中,消耗着内存资源,这时,我们必须显示调用对象的析构函数,以释放它们占用的内存。
GC使用一个单独的进程来检查哪些对象须要清除,应用程序运行过程中,CLR保留该应用程序的相关信息,GC利用这些信息进行无用单元的回收。GC先弄清应用程序直接引用的根对象,然后再找出根对象引用的对象清单,识别出应用程序直接或间接引用的所有对象之后,GC就可以清除所有托管堆中驻留的对象了。
----------------------关于CLR:工作原理--------------------------------------------------------------------
10。1: PE文件:
编译应用程序时,除了生成MSIL文件外,还生成了一些元数据,这些元数据包含了有关了该应用程序的信息。在PE文件中,元数据以二进制形式存在。
10.2: 关于程序集
程序集是应用程序基本的构建块,是一个或多个包含应用程序代码和资源的EXE或DLL文件的逻辑集合,也是部署NET应用程序的单元。
程序集结构:
程序集元数据或清单
描述类型的类型数据或元数据
模块
资源组
10.3 装箱一个值表示隐式地将一个值类型转换为类型对象;
拆箱是一个是显示的类型转换操作。
-----------
10.4: Attributes属性
是可以与资源代码的特定要素(类,成员,参数等)相关联的信息块。用于改变应用程序运行时的行为,与元数据存放在一起,并且可以通过反射过程被轻易的检索到。
framework中属性通过System.Attributte类实现。
10.5 关于反射:
可以简单的定义为在运行时发现类型信息的能力。
所有与反射相关的类都位与System.Reflection命名空间中,我们可以使用这些类对程序集和类型信息进行逻辑遍历。
本文深入探讨了.NET Framework的基本组成,包括CLR的功能及其提供的类型安全性、元数据的作用及生成方式、程序集的结构等内容。此外,还介绍了值类型与引用类型之间的转换机制以及反射的应用。
752

被折叠的 条评论
为什么被折叠?



