- 1
- 0
- 约3.38千字
- 约 16页
- 2015-12-13 发布于广东
- 举报
在小册子 * * 第9章 泛型编程 本章要点: 泛型的概念 泛型方法 泛型约束 使用泛型 在线教务辅导网: 教材其余课件及动画素材请查阅在线教务辅导网 QQ:349134187 或者直接输入下面地址: 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 泛型的实现 泛型在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#所要求的类型安全。“显式约束”并非必须,如果没有指定“显式约束”,范型类型参数将只能访问System.Object类型中的公有方法。在C#中通过whe
您可能关注的文档
- Verilog HDL数字系统设计——原理、实例及仿真 作者 康磊 第1-7章 第6章.ppt
- Verilog HDL数字系统设计——原理、实例及仿真 作者 康磊 第1-7章 第7章.ppt
- Verilog HDL数字系统设计——原理、实例及仿真 作者 康磊 第8-13章 第8章.ppt
- Verilog HDL数字系统设计——原理、实例及仿真 作者 康磊 第8-13章 第10章.ppt
- Verilog HDL数字系统设计——原理、实例及仿真 作者 康磊 第8-13章 第11章.ppt
- Verilog HDL数字系统设计——原理、实例及仿真 作者 康磊 第8-13章 第12章.ppt
- Verilog HDL数字系统设计——原理、实例及仿真 作者 康磊 第8-13章 第13章.ppt
- VFP程序设计简明教程 作者 鲁俊生 第1-6章 第2章 常量、变量、表达式及函数.ppt
- VFP程序设计简明教程 作者 鲁俊生 第1-6章 第3章 表的基本操作.ppt
- VFP程序设计简明教程 作者 鲁俊生 第1-6章 第4章 程序设计基础.ppt
- GB/T 42818.2-2026认知无障碍 第2部分:报告.pdf
- 中国国家标准 GB/T 47116-2026地下采矿机械 工作面移动式采掘机械 采煤机和犁式系统的安全要求.pdf
- 《GB/T 47116-2026地下采矿机械 工作面移动式采掘机械 采煤机和犁式系统的安全要求》.pdf
- 中国国家标准 GB/T 42818.2-2026认知无障碍 第2部分:报告.pdf
- 《GB/T 42818.2-2026认知无障碍 第2部分:报告》.pdf
- 《GB/T 27664.1-2026无损检测仪器 超声检测设备的性能与检验 第1部分:仪器》.pdf
- 中国国家标准 GB/T 27664.1-2026无损检测仪器 超声检测设备的性能与检验 第1部分:仪器.pdf
- GB/T 27664.1-2026无损检测仪器 超声检测设备的性能与检验 第1部分:仪器.pdf
- GB/T 45305.5-2026声学 建筑构件隔声的实验室测量 第5部分:测试设施和设备的要求.pdf
- 中国国家标准 GB/T 45305.5-2026声学 建筑构件隔声的实验室测量 第5部分:测试设施和设备的要求.pdf
最近下载
- 高等机构学01螺旋理论基础讲义.ppt
- 基于plc的清洗消毒机控制系统设计 .pdf VIP
- 发明专利说明书范例.pdf VIP
- 人教版英语中考九年级话题复习中国传统节日Chinesetraditionalfestivals教学设计.docx VIP
- 四年级道德与法治下册第一单元单元整体教学设计.pdf VIP
- 进修汇报医生课件课件.pptx VIP
- 03G102钢结构设计制图深度和表示方法(高清版) (OCR).pdf VIP
- 基于三菱PLC的自动洗碗机控制系统设计.doc VIP
- 下肢深静脉血栓形成介入治疗护理实践指南(2025)解读PPT课件.pptx VIP
- 南京新港东区建设发展有限公司南京龙潭新城花园路等13条道路及花园河等4条河道工程项目环评报告表(报批稿).pdf VIP
原创力文档

文档评论(0)