- 1、本文档共22页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C#第十九章.ppt
本章内容 什么是泛型 C#中的泛型 泛型类 声明泛型类 创建构造类型 创建变量和实例 类型参数的约束 泛型接口 泛型结构 泛型委托和方法 扩展方法和泛型类 19.1 什么是泛型 到现在为止所有在类声明中用到的类型都是特定的类型,是程序员或者是BLC定义的,然而我们可以把类的行为提取或者重构出来,使之不仅能应用到他们编码的数据类型上,而且还能应用到其他类型上的话,类就更会有用。 例如: Class myintstack int stackprinter 0; int[] stackarray; public void push int x … public void pop int x … 假如现在要float类型的值有相同的功能,如果再产生连续的代码就会有很多缺点。 19.2 C#中的泛型 它提供了一种更准确的使用一种以上类型代码的方式泛型允许我们声明类型参数化的代码,我们可以用不同的类型实例化。C#提供了五种泛型类,结构,接口,委托和方法 我们继续上节的例子,我们在myclassstack创建一个泛型类,如下所示: Class mystack(T) int stackprinter 0; T[] stackarray; public void push T x … public void pop T x … 泛型类声明的字符串是由尖括号和T组成,T代表类型的占位符。 19.3 泛型类 创建和使用常规的非泛型类的过程有两个步骤:声明类并创建类的实例。但是泛型类不是实际的类,而是类的模板,所以我们必须先从他们构件实际的类类型,然后创建这个构造后的类类型的实例。 在某些类型上使用占位符来声明一个类。 为占位符提供真实类型,这样就有了真实类型的定义,填补了所有的空缺。 从“填空后”的类定义创建实例。 19.4 声明泛型类 声明一个简单的泛型类和声明一个普通类差不多,区别如下: 在类名之后放置一组尖括号。 在尖括号中用逗号分隔的占位符字符转来表示希望提供的类型,这被叫做类型参数。 在泛型声明的主体中使用类型参数来表示应该被替代的类型 例子: Class someclass T1,T2 Public T1 somvar new T1 ; Public T2 othervar new T2 ; 19.5 创建构造类型 我们不能直接从泛型对象创建类对象。首先,我们要告诉编译器使用哪些真实类型来代替占位符。编译器获取这些真实类型并从他创建一个真实类型对象。 要从泛型类构建类类型,列出类名字并在尖括号中提供真实类型代替类型参数。要代替类型参数的真实类型叫做类型实参。 编译器接收了类型实参,并且替换泛型类主体中的相应类型参数,产生构造类型。 19.6创建变量和实例 在创建引用和实例时构造类类型的使用和常规类型差不多,如下代码显示两个类对象的创建: Mynongenclass myngc new Mynongenclass Somclass short,int mysc1 new Somclass short,int ; Var mysc2 new Somclass short,int ; 和非泛型类一样引用和实例可以分开创建。 可以从可以从同一个泛型类型构建出很多不同的类类型,每一个都有独立的类类型,就好像他们都有独立的非泛型类声明一样。 19.7 类型参数的约束 只要我们代码不访问它处理的一些类型的对象,泛型类就可以处理任何类型,符合约束的类型参数叫做未绑定类型参数。然而,如果代码尝试使用其他成员,编译器会产生一个错误信息。 例如: Class simple Static public bool lessthan T i1,T i2 return i1 i2 //错误 ... 要让泛型变得更有用,我们需要提供额外的信息让编译器知道参数可以接受哪些类型,这些额外的信息叫做约束,只有符合约束的实参才能用于类型约束。 19.7.1 where子句 约束使用的where子句列出。 每一个有约束类型的参数有自己的where子句。 如果形参有多个约束,它们在where子句中用逗号分隔。 where typaram:constraint, constraint… 有关where子句的要点如下: 它们在类型参数列表的关闭尖括号之后列出。 它们不使用逗号或者其他符号分隔。 它们可以任意次序列出。 Where是上下文关键词,可以在其他上下文中使用。 例子: Class myclass T1,T2,T3 Where T2:customer//T2的约束 Where T3:Icomparable//T3的约束 19.7.2 约束类型的次序 共有五种类型的约束:class,struct,inter
您可能关注的文档
- Alvar Aalto(阿尔瓦阿尔托).ppt
- ao ou iu (伊慧群).ppt
- Armani阿玛尼千熙黑曜岩深彻修护眼霜.docx
- ATP和呼吸作用.ppt
- Audiograbber音轨抓取工具.pptx
- A级景区评定报告书.doc
- B-1B“枪骑兵”战略轰炸机.ppt
- b3u3复习薄.ppt
- bad5020隔爆型防爆灯和bat86隔爆型防爆泛光灯价格.docx
- BGZ系列液晶鼓风干燥箱300度说明书.doc
- TZSM-校史馆展览展示工程服务规范及编制说明.pdf
- TSEEPLA-生态环境标准实施评估指南及编制说明.pdf
- 化妆品中羟吡啶酮的测定 高效液相色谱法编制说明.pdf
- QJKL023-2020 佳木斯市恺乐农药有限公司企业标准240gpL乳氟禾草灵乳油.pdf
- QHTY031-2020 过氧化氢分解仪.pdf
- TGLAC-基于北斗的智能网联车载设备技术要求及编制说明.pdf
- QALKS0001-2020 新能源车用机械式变速器总成台架试验标准.pdf
- TSSM-基于计量方法学的碳排放核算指南 铝冶炼企业及编制说明.pdf
- 产品碳足迹评价规范 污泥干化焚烧系统集成装备及编制说明.pdf
- DBS333018-2024 食品安全地方标准 藕粉生产卫生规范.pdf
文档评论(0)