第5章+泛型-1(课件)-+《算法与程序设计-C#》同步教学(清华大学版).pptx

第5章+泛型-1(课件)-+《算法与程序设计-C#》同步教学(清华大学版).pptx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

C#程序设计第5章泛型

2泛型泛型引例泛型方法★泛型类泛型集合

3本章目标理解泛型的基本概念及使用泛型的优点掌握泛型方法的定义和使用掌握泛型类的定义和使用掌握常用的泛型集合的使用

4泛型泛型方法★

5引例staticvoidSwap(refintx,refinty){inttemp;temp=x;x=y;y=temp;}staticvoidSwap(refdoublex,refdoubley){doubletemp;temp=x;x=y;y=temp;}思考:编写交换两个int数的方法?编写交换两个double数的方法?交换两个short数的方法?交换两个decimal数的方法?.....带来的问题:代码膨胀

6如果C#没有泛型ArrayListlist1=newArrayList();list1.Add(3);list1.Add(105);foreach(intxinlist1){Console.WriteLine(x);}Teacherteach=newTeacher();students.Add(stu1);students.Add(teach);foreach(Objectstuoinstudents){Studentstu=(Student)stuo;Console.WriteLine(stu.Name);}思考:集合的使用ArrayList、Stack、Queue、HashTable任何引用或值类型都将隐式地向上强制转换为Object(解决了代码膨胀)如果项是值类型,则添加时需要进行装箱操作,检索时需要进行拆箱操作带来的问题:装箱、拆箱兼容任何类型能否加入一个Teacher对象?学生对象集合

7类型安全2Student集合张三李四王五赵老师添加对象遍历集合对象存储不易控制类型转换容易出错Teacher对象运行错误

8泛型的概念通过泛型可以定义类型安全的数据结构,而无须使用实际的数据类型所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型,泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用。泛型的三大优点:可重用性类型安全效率

9泛型的定义C#中,可以定义:泛型接口泛型类泛型方法泛型事件泛型委托泛型定义是通过泛型参数(T)来进行定义的创建泛型类的实例时,则需要与泛型参数对应的实际类型

10泛型方法泛型方法是使用类型参数声明的方法。编译器能够根据传入的方法实参推断类型形参编译器只能根据实参推断泛型参数,此时可以省略指定实际泛型参数编译器不能根据返回值推断泛型参数演示案例:泛型方法[访问修饰符]返回值方法名类型参数列表(参数列表)可用于该方法的返回类型声明、参数类型声明和方法代码中的局部变量的类型声明。

11泛型方法//交换两个int数的方法staticvoidSwap(refintx,refinty){inttemp;temp=x;x=y;y=temp;}//交换两个double数的方法staticvoidSwap(refdoublex,refdoubley){doubletemp;temp=x;x=y;y=temp;}//交换任意两个数的方法staticvoidSwapT(refTx,refTy){Ttemp;temp=x;x=y;y=temp;}泛型inta=1;intb=2;Swapint(refa,refb);doublec=1.1;doubled=2.2;Swapdouble(refc,refd);调用

12泛型方法的重载泛型方法可以使用类型参数进行重载使用约束对方法中的类型参数启用更专门的操作

13泛型方法如果泛型方法的泛型参数与类型的泛型参数相同,则编译器生成警告方法的泛型参数隐藏了外部类型的泛型参数可以为方法的泛型参数提供另一个标识编译错误

您可能关注的文档

文档评论(0)

云一就是云一 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档