C#编程和.NET框架 崔建江 第6章 .NET框架 第六章新.pptVIP

C#编程和.NET框架 崔建江 第6章 .NET框架 第六章新.ppt

  1. 1、本文档共131页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 首先创建了一个新的应用程序域,然后使用了其中的类型,最后又将该应用程序域和其内存所有的程序集一起卸载掉,还演示了怎样定义一个可以跨越应用程序域边界、并通过引用的方法来进行封送处理的类型 * 反射允许我们查找元数据所携带的信息,这个概念并不是新提出来的,在COM中也提供了相应的方法,这里做一简单的回顾。 Type Library 包含了大部分类型的信息,可以嵌入到组件中,也可以与组件放置在一起,可以通过ITypeLib和ITypeInfo接口来查看 Attributes 描述了方法、接口或参数的行为方式 IDispatch IDispatch叫做调度接口,为了使其它语言也可以使用COM,比如说一些脚本语言不支持指针,所以没有办法来调用Com中的虚函数,所以调度接口把每一个函数每一个属性都编上号,客户程序要调用这些函数属性的时侯就把这些编号传给IDispatch接口就行了,IDispatch再根据这些编号调用相应的函数 支持大多数的数据类型 因为COM是为多种语言使用设计的,所以它支持大多数的简单类型,但它是二进制标准的,所以对于一些复杂的类型,需要特别的处理方式 类似的,在C#中,我们应用反射,可以枚举出元数据表中包括的所有类型,对于每个类型,又可以获得它的基类型、它实现的接口、以及与其相关联的一些标记,还可以分析相关的元数据表来查询一个类型的字段,方法,属性,事件以及定制特性,这样就可以在运行时而不是编译时显式的加载程序集,构造类型实例,并调用类型上的方法实现类似于Win32中LoadLibrary功能的晚绑定(late binding),当需要修改时,可以只修改特定模块中的程序,只要接口不发生变化,主程序就不需要重新编译,相当于实现动态链接库(DLL)的功能 * 元数据(编译以后的最基本数据单元)本质上是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等,System.reflection命名空间包含的几个类,允许你反射(解析)这些元数据表的代码 * System.Type获取类型的名称 System.Reflection.Assembly获得指定装配件的元数据,也包含执行一个装配件的方法 * 首先,从一个应用程序域出发,可以得到其内加载的所有程序集,根据程序集,又可以得到组成它所有的模块。由程序集或者模块,可以得到它里面定义的所有类型。最后根据类型,可以得到它的嵌套类型、字段、构造器、方法、属性以及事件 * 通过反射,我们获得一个类型的Type对象引用,可以创建出该类型的实例 * 在前面学习了程序集(assembly),定制属性(attribute),和本节的反射(reflect)后,看它们是怎样组织在一起应用的。 * 紫色部分为Framework * 这些新特性是怎样实现的,下面从各个组成部分来具体讲述 * 对于整个.NET框架来说,这三个概念非常重要。要实现多语言的互操作性,必须有一组各种语言都认可的基本数据类型,这样才能对私有语言进行标准化处理。CTS提供了这个概念,还提供了定义定制类的规则;CLS是确保代码可以在任何语言中访问的最小标准集合,所有用于.NET的编译器都应支持CLS。CLS构成了可以在.NET和IL中使用的功能子集,代码也可以使用CLS外部的功能。如果非CLS功能在代码所在的程序集的外部是可见的,那么这些功能就不能在某些语言中使用;CLR处于操作系统和代码之间,是整个Framework的核心,负责代码的编译、执行、管理等所有工作 * .NET分布式编程-C#篇19页 .NET框架程序设计(修订版)25页 * NET框架程序设计(修订版)26页 所有类型都必须(直接或间接)继承自预定义类型System.Object,Object作为根类型保证了每个类型实例都有一组公共行为,具体说,每个类型都具有以下的方法: 判断两个实例是否相等 获得实例的散列码 查询实例的类型 执行实例的浅拷贝 获得实例当前状态的字符串表示 清理资源 * NET框架程序设计(修订版)27页 * NET框架程序设计(修订版)28页 在VB.net中没有UInt32类型,也不区分大小写 因为是公有方法,当被其它语言写的类继承时,调用会发生错误 * Microsoft?.NET Explained7页 * 我们都知道非托管代码是针对某一特定CPU平台所编译的,当它们被调用时,这些代码便会立即执行。而在托管环境中,代码的编译要经过两个阶段才能完成,首先,编译器需要扫描源代码,将其编译为IL代码。当执行这些代码时还需要被编译为本地的CPU指令,这通常需要分配更多的内存也需要更多的时间,这会不会损伤系统的性能,影响代码的执行速度? 针对这一点,微软已经做了大量的工作,使额外的开销降到最低

您可能关注的文档

文档评论(0)

时间加速器 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档