- 0
- 0
- 约3.47千字
- 约 16页
- 2015-12-13 发布于广东
- 举报
在小册子 * AutoCAD计算机辅助设计 C#程序设计教程 清华大学出版社 第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 泛型的实现 在.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#泛型要求对“所有泛型类型或泛型方法的类型参数”的任何假
您可能关注的文档
- Verilog HDL数字设计教程 作者 贺敬凯 全书 第1章 Verilog HDL数字设计综述.ppt
- Verilog HDL数字设计教程 作者 贺敬凯 全书 第2章 Verilog HDL基本概念.ppt
- Verilog HDL数字设计教程 作者 贺敬凯 全书 第4章 Verilog HDL常用电路设计.ppt
- Verilog HDL数字设计教程 作者 贺敬凯 全书 第7章 Verilog HDL可综合设计举例.ppt
- Verilog HDL数字设计教程 作者 贺敬凯 全书 第8章 CPU结构及其设计.ppt
- Verilog HDL数字系统设计——原理、实例及仿真 作者 康磊 第1-7章 第1章.ppt
- Verilog HDL数字系统设计——原理、实例及仿真 作者 康磊 第1-7章 第3章.ppt
- Verilog HDL数字系统设计——原理、实例及仿真 作者 康磊 第1-7章 第4章.ppt
- Verilog HDL数字系统设计——原理、实例及仿真 作者 康磊 第1-7章 第6章.ppt
- Verilog HDL数字系统设计——原理、实例及仿真 作者 康磊 第1-7章 第7章.ppt
- (2026春新版)部编版八年级语文下册《第一单元》PPT课件.pptx
- 2018电力监控系统网络安全监测装置技术规范.docx
- 2022电力监控系统安全防护方案审核要点.docx
- 2014电力电缆光伏系统EN 50618欧标.docx
- (2026春新版)人教版二年级数学下册《第三单元 万以内数的认识》教案.docx
- (2026春新版)人教版二年级数学下册《第四单元 万以内的加法和减法》教案.docx
- (2026春新版)人教版二年级数学下册《综合与实践 时间在哪里》教案.docx
- (2026春新版)苏教版二年级数学下册《综合与实践 时间有多长》教案 .pdf
- (2026春新版)部编版三年级语文下册第3单元(教案).docx
- (2026春新版)部编版三年级语文下册第8单元(教案).docx
最近下载
- Dräger德图呼吸机Oxylog 3000 plus用户手册.pdf
- 零售业销售数据分析方法与应用.docx VIP
- 会计信息系统:财务篇 教案全套 宋红尔 第1--9章 系统管理---UFO报表.docx
- 个体化音乐干预减轻腹腔镜手术病人术前焦虑的研究.pdf VIP
- 精品解析:黑龙江省哈尔滨市德强高级中学2023-2024学年高一下学期开学验收考试数学试题(解析版).docx VIP
- GB50108–2024《地下工程防水技术规范》.pptx VIP
- 2023年上海初三语文一模试题说明文阅读汇编含答案.doc VIP
- 2025年福建省中考物理试卷(附答案解析).docx VIP
- Specialized English for Medical Imaging Technology医学影像 技术专业英语.pptx VIP
- 改建工程路面结构设计毕业设计.doc VIP
原创力文档

文档评论(0)