c#第04章.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
主要内容 C#2.0/3.0同C#1.0/1.2相比,在语法层面、CLR、基础类库、编译器等方面均做了许多改进。本章仅介绍C#2.0/3.0语法层面上的一些主要改进。主要内容: C#2.0引入新技术:泛型、分部类型、匿名方法、静态类、迭代器、可空类型等 C#3.0新特性:隐式类型、自动实现的属性、对象与集合初始化、匿名类型、扩展方法、分部方法与Lambda式等 4.1.1泛型 C#2.0引入的泛型技术,使开发人员能够实现程度很高的代码重用,获得更高的集合类性能。本小节将对这一重要技术予以介绍,共分五个部分: 为什么引入泛型 什么是泛型 泛型是如何实现的 如何使用泛型 泛型约束 1.为什么引入泛型? 1.为什么引入泛型? 基于object解决方案却带来了性能、安全的问题: 性能问题:值类型Push时需要将某种具体类型转换成Object类型,这就要装箱处理;Pop时需要将Object类型转换成某种具体类型,也需要拆箱处理。 类型安全问题:这是一个更为严重的问题。编译时任何类型都可以转换成object,无法保证运行时的类型安全。下面的代码可以具体说明这一点。 2.什么是泛型? 2.什么是泛型? C#泛型是一些有“占位符”的类、结构、接口和方法,通过泛型赋予了代码更强的类型安全,更好的复用,更高的效率,更清晰的约束。关于泛型概念理解还需要注意以下几点: 泛型不是一种特殊的类型,它只是带有“占位符”的类、结构、接口、方法或者委托。 占位符是必须指定的。在前面的代码中,Stack T指定了这个泛型类的占位符是“T”,指定后就可以认为有了“T”这么一个数据类型,然后这个T类型既可以作为参数的数据类型,又可以作为方法的返回类型,还可以作为局部变量、数组的数据类型。 引入泛型技术之后,定义一个类、接口、方法等数据结构时不指定具体类型,但实现这些数据结构时一定要指定具体类型,定义时使用来指定类型占位符,实现时也使用来指定具体类型。 3.泛型是如何实现的? .NET中泛型运行机制主要有三个要点: 在.NET2.0中,中间语言(CIL)和公共语言运行库(CLR)为泛型提供本机支持,即.NET中泛型能力是由CLR在运行时支持的。 泛型代码被编译之后,粗略地看有两种数据:中间语言(CIL)代码和元数据。这两种数据中其实都带有泛型信息,它们采用特殊的占位符来表示泛型。 泛型代码被编译为CIL代码和元数据并不是实例化发生的时候,真正的泛型实例化工作以“On-demand”的方式,发生在JIT编译时。 4.泛型类 同一般类不同,泛型类封装了不属于具体数据类型的数据或操作。泛型类的定义与一般类相似,只是要使用泛型类型声明。之后,泛型类型就可以在类中用作一个字段成员或者方法的参数类型。 【实例4-1】泛型的链表类 5.泛型结构 结构是值类型,通常可以定义结构类型表示一些简单的对象。但这些结构体通常都存储一种类型的数据。引入泛型技术之后,就可以定义一个可以保存任何数据类型的泛型结构体。泛型结构定义一般格式为: struct 结构名泛型类型列表 { //结构体 } 【实例4-2】泛型结构应用实例 6.泛型方法 class MyClass{ public static void SwapT(ref T a, ref T b) { T c; c = a; a= b; b= c; } } MyClass.Swapint(ref a, ref b); 7.泛型集合 泛型集合大部分都位于系统命名空间System.Collections.Generic中,其中也有一些位于命名空间System.Collections.ObjectModel中,泛型集合除了可以提供非泛型集合所有功能外,还提供许多非泛型集合没有的功能。另外新的泛型接口也代替了以前的非泛型接口。 表4-1、4-2 8.泛型约束 很多时候我们定义的泛型并不能适合任何类型。在这种情况下,将需要把泛型类型指定为面向某一些类型而不是全部类型,这就是C#中泛型约束要做的工作。泛型约束使用where关键字来指定。 【实例4-3】泛型约束应用实例。 9.命名约定与default关键字 命名约定 :在程序中使用泛型,泛型类型名称命名一般应遵循一定规则 。 default关键字 4.1.2分部类型 什么是分部类型? 分部类型的定义。分部类型是通过修饰符partial进行定义的,该修饰符出现在关键字class、struct和interface之前,用于定义不同的分部类型 什么情况下使用分部类? 注意问题 4.1.2分部类型

文档评论(0)

ajgoaw + 关注
文档贡献者

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

1亿VIP精品文档

相关文档