网站大量收购独家精品文档,联系QQ:2885784924

Visual C# 2005程序设计教程 教学课件 作者 978 7 302 19477 4 ch09.pptVIP

Visual C# 2005程序设计教程 教学课件 作者 978 7 302 19477 4 ch09.ppt

  1. 1、本文档共15页,可阅读全部内容。
  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文档。上传文档
查看更多
在小册子 * AutoCAD计算机辅助设计 C#程序设计教程 清华大学出版社 第9章 泛型编程 本章要点: 泛型的概念 泛型方法 泛型约束 使用泛型 9.1 泛型概述 9.1.1 泛型的引入 开发人员在编写程序时,经常遇到两个模块的功能非常相似,只是处理的数据类型不同,如一个是处理int数据,另一个是处理string数据,或者其他自定义的数据类型,针对这种情况,可以分别写多个类似的方法来处理每个数据类型,只是方法的参数类型不同;在C#中也可以定义存储的数据类型为Object类型,这样就可以通过装箱和拆箱操作来变相实现上述需求。同时C#还提供了更适合的泛型机制,专门用来解决这个问题。 9.1 泛型概述 9.1.2 什么是泛型 通过泛型可以定义类型安全类,而不会损害类型安全、性能或工作效率。开发人员只须一次性地将服务器实现为一般服务器,同时可以用任何类型来声明和使用它。为此,需要使用“”和“”括号,以便将一般类型参数括起来。泛型格式如下: public class StackT {  private T[] data;  public T Pop(){...}  public void Push(T item){...}  public Stack(int i)  {   this.data = new T[i];  } } 9.1 泛型概述 9.1.2 什么是泛型 泛型类的格式与一般类一致,只是引入了通用数据类型T就可以适用于任何数据类型,并且类型安全的。泛型类的调用方法如下: //实例化处理int类型数据的类对象 Stackint a = new Stackint(100); a.Push(10); //这一行编译不通过,因为类a只接收int类型的数据 a.Push(8888); //不需要进行类型转换 int x = a.Pop(); 9.1 泛型概述 9.1.2 什么是泛型 这个类与使用object实现的类的区别: 它是类型安全的。如果实例化为int类型的栈,就不能处理string及其他类型的数据。 无需装箱和折箱。这个类在实例化时,按照所传入的数据类型生成本地代码,本地代码数据类型已确定,所以无需装箱和折箱。 无需类型转换。 9.1 泛型概述 9.1.3 泛型的实现 在.NET 2.0中,泛型在IL(中间语言)和CLR本身中具有本机支持。在编译一般C#服务器端代码时,编译器会将其编译为IL,就像其他任何类型一样。但是,IL只包含实际特定类型的参数或占位符。此外,一般服务器的元数据包含一般信息。 客户端编译器使用该一般元数据来支持类型安全。当客户端提供特定类型而不是一般类型参数时,客户端的编译器将用指定的类型实参来替换服务器元数据中的一般类型参数。这会向客户端的编译器提供类型特定的服务器定义,就好像从未涉及到泛型一样。这样,客户端编译器就可以确保方法参数的正确性,实施类型安全检查。 9.1 泛型概述 9.1.3 泛型的实现 如果客户端指定引用类型,则JIT编译器将服务器IL中的一般参数替换为Object,并将其编译为本机代码。在以后的任何针对引用类型而不是一般类型参数的请求中,都将使用该代码。请注意,采用这种方式,JIT编译器只会重新使用实际代码。实例仍然按照它们离开托管堆的大小分配空间,并且没有强制类型转换。 9.1 泛型概述 9.1.4 泛型方法 泛型方法是使用类型参数声明的方法。C#泛型机制不支持在除方法外的其他成员(包括属性、事件、索引器、构造器、析构器)的声明上包含类型参数,但这些成员本身可以包含在泛型类型中,并使用泛型类型的类型参数。泛型方法既可以包含在泛型类型中,也可以包含在非泛型类型中。 .NET中的泛型机制使开发人员可以重用代码。类型和内部数据可以在不导致代码膨胀的情况下更改,而不管使用的是值类型还是引用类型。开发人员可以一次性地开发、测试和部署代码,通过任何类型(包括将来的类型)来重用它,并且全部具有编译器支持和类型安全。 9.2 泛型约束 C#泛型要求对“所有泛型类型或泛型方法的类型参数”的任何假定,都要基于“显式的约束”,以维护C#所要求的类型安全。“显式约束”并非必须,如果没有指定“显式约束”,范型类型参数将只能访问

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档