visual c# 2005程序设计基础教程ch09

visual c# 2005程序设计基础教程ch09

ID:19967223

大小:28.50 KB

页数:5页

时间:2018-10-08

visual c# 2005程序设计基础教程ch09_第1页
visual c# 2005程序设计基础教程ch09_第2页
visual c# 2005程序设计基础教程ch09_第3页
visual c# 2005程序设计基础教程ch09_第4页
visual c# 2005程序设计基础教程ch09_第5页
资源描述:

《visual c# 2005程序设计基础教程ch09》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、VisualC#2005程序设计基础教程ch09本文由wtg1988718贡献ppt文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。C#程序设计教程程序设计教程AutoCAD计算机辅助设计清华大学出版社第9章泛型编程本章要点:本章要点:泛型的概念泛型方法泛型约束使用泛型C#程序设计教程程序设计教程AutoCAD计算机辅助设计清华大学出版社9.1泛型概述9.1.1泛型的引入开发人员在编写程序时,经常遇到两个模块的功能非常相似,只是处理的数据类型不同,如一个是处理int数据,另一个是处理string数据,或者其他自定义的数据类型,针对这种情况,可以分别写多个类似

2、的方法来处理每个数据类型,只是方法的参数类型不同;在C#中也可以定义存储的数据类型为Object类型,这样就可以通过装箱和拆箱操作来变相实现上述需求。同时C#还提供了更适合的泛型机制,专门用来解决这个问题。C#程序设计教程程序设计教程AutoCAD计算机辅助设计清华大学出版社9.1泛型概述9.1.2什么是泛型通过泛型可以定义类型安全类,而不会损害类型安全、性能或工作效率。开发人员只须一次性地将服务器实现为一般服务器,同时可以用任何类型来声明和使用它。为此,需要使用“<”和“>”括号,以便将一般类型参数括起来。泛型格式如下:publicclassStack{privateT[]dat

3、a;publicTPop(){……}publicvoidPush(Titem){……}publicStack(inti){this.data=newT[i];}}C#程序设计教程程序设计教程AutoCAD计算机辅助设计清华大学出版社9.1泛型概述9.1.2什么是泛型泛型类的格式与一般类一致,只是引入了通用数据类型T就可以适用于任何数据类型,并且类型安全的。泛型类的调用方法如下://实例化处理int类型数据的类对象Stacka=newStack(100);a.Push(10);//这一行编译不通过,因为类a只接收int类型的数据a.Push("8888");//不需要进行类型转换intx=

4、a.Pop();C#程序设计教程程序设计教程AutoCAD计算机辅助设计清华大学出版社9.1泛型概述9.1.2什么是泛型这个类与使用object实现的类的区别:它是类型安全的。如果实例化为int类型的栈,就不能处理string及其他类型的数据。无需装箱和折箱。这个类在实例化时,按照所传入的数据类型生成本地代码,本地代码数据类型已确定,所以无需装箱和折箱。无需类型转换。C#程序设计教程程序设计教程AutoCAD计算机辅助设计清华大学出版社9.1泛型概述9.1.3泛型的实现在.NET2.0中,泛型在IL(中间语言)和CLR本身中具有本机支持。在编译一般C#服务器端代码时,编译器会将其编译为I

5、L,就像其他任何类型一样。但是,IL只包含实际特定类型的参数或占位符。此外,一般服务器的元数据包含一般信息。客户端编译器使用该一般元数据来支持类型安全。当客户端提供特定类型而不是一般类型参数时,客户端的编译器将用指定的类型实参来替换服务器元数据中的一般类型参数。这会向客户端的编译器提供类型特定的服务器定义,就好像从未涉及到泛型一样。这样,客户端编译器就可以确保方法参数的正确性,实施类型安全检查。C#程序设计教程程序设计教程AutoCAD计算机辅助设计清华大学出版社9.1泛型概述9.1.3泛型的实现如果客户端指定引用类型,则JIT编译器将服务器IL中的一般参数替换为Object,并将其编译

6、为本机代码。在以后的任何针对引用类型而不是一般类型参数的请求中,都将使用该代码。请注意,采用这种方式,JIT编译器只会重新使用实际代码。实例仍然按照它们离开托管堆的大小分配空间,并且没有强制类型转换。C#程序设计教程程序设计教程AutoCAD计算机辅助设计清华大学出版社9.1泛型概述9.1.4泛型方法泛型方法是使用类型参数声明的方法。C#泛型机制不支持在除方法外的其他成员(包括属性、事件、索引器、构造器、析构器)的声明上包含类型参数,但这些成员本身可以包含在泛型类型中,并使用泛型类型的类型参数。泛型方法既可以包含在泛型类型中,也可以包含在非泛型类型中。.NET中的泛型机制使开发人员可以重

7、用代码。类型和内部数据可以在不导致代码膨胀的情况下更改,而不管使用的是值类型还是引用类型。开发人员可以一次性地开发、测试和部署代码,通过任何类型(包括将来的类型)来重用它,并且全部具有编译器支持和类型安全。C#程序设计教程程序设计教程AutoCAD计算机辅助设计清华大学出版社9.2泛型约束C#泛型要求对“所有泛型类型或泛型方法的类型参数”的任何假定,都要基于“显式的约束”,以维护C#所要求的类型安全。“显式约束”并非必须,如果没有指

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。