必须知道的FrameWork

本文深入探讨了.NET Framework的基本组成,包括CLR的功能及其提供的类型安全性、元数据的作用及生成方式、程序集的结构等内容。此外,还介绍了值类型与引用类型之间的转换机制以及反射的应用。

                                          知其然更要知其所以然!!!!!
               
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命名空间中,我们可以使用这些类对程序集和类型信息进行逻辑遍历。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值