浅谈C#泛型和C++模板.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅谈C#泛型和C模板

2008年03月 内蒙古民族大学学报 Mar.2008 箜!生鲞筮兰翅 &婴坐堕!旦里竺丛竺翌gQ!i垒旦翌i!璺望血堑塑堑Q望堂尘塑 !尘:!兰丛旦:兰 浅谈C#泛型和C++模板‘ 张玉春1,程春英1,李海峰2 (1.内蒙古民族大学数学与计算机科学学院,内蒙古通辽028043; 2.内蒙古煤炭工业技术学校,内蒙古通辽028021) [摘要]表面上C#泛型的语法看起来与C++模板类似,但是编译器实现和支持它们的方式存 在重要差异.本文针对C++模板和C#泛型进行了一系列比较,探讨了它们之间存在的不同,以便能 更好的理解它们之间的差异性. [关键词]饼泛型;cI+模板;类型约束 [中图分类号]TP313[文献标识码]A [文章编号]1008—5149(2008)02—0051—02 C#泛型和c++模板都是用于提供参数化类型支持 c#的泛型支持包括类、结构、接口、委托共四种泛型类 的语言功能.然而,这两者之间存在许多差异.在语法层面 型,以及方法成员.C群的泛型采用”基类,接口,构造器,值 上,c#泛型是实现参数化类型的更简单方法,不具有c+类型/7l用类型”的约束方式来实现对类型参数的“显式约 束”,它不支持c++模板那样的基于签名的隐式约束。 +模板的复杂性.此外,c群并不尝试提供c++模板所提 供的所有功能.在实现层面,主要区别在于,c#泛型类型替 使用c#泛型,编译器会将一般代码编译为中问语言, 换是在运行时执行的,从而为实例化的对象保留了泛型类 而不管客户端将使用什么样的类型实参.如果一般代码使 型信息。 用与客户端使用的特定类型实参不兼容的一般类型参数的 泛型是指通过参数化类型来实现在同一份代码上操作 方法、属性或成员的话,它相当于缺少类型安全。在c# 多种数据类型,是指具有在多种数据类型上皆可操作的含 中,您需要通知编译器客户端指定的类型必须遵守那些约 义,与模板有些相似。 束,以便使它们能够取代一般类型参数而得以使用.c#泛 c++模板是所有版本STL中的基础.有了模板,就不型存在三个类型的约束: 必分别为整数数组、实数数组等不同的数据类型编写数组 (1)派生约束是指示编译器一般类型参数派生自诸如 类,而是编写一个通用的数组类模板.模板为软件行业实现 接口或特定基类之类的基类型。 了软件复用。标准模板库是C++标准程序库的中心,它 (2)默认构造函数约束是指示编译器一般类型参数公 采用泛型程序设计思想,深刻影响了标准程序库的整体结 开了默认的公共构造函数(不带任何参数的公共构造函 构和组成。 数)。 1 C#泛型 (3)引用/值类型约束是将一般类型参数约束为引用类 通过C#泛型我们可以定义类型安全的数据结构,而无 型或值类型.一般类型可以利用多个约束,甚至可以在使用 须使用实际的数据类型。这能够显著提高性能并得到更高 一般类型参数时使IntelliSense反射这些约束。例如,建议 质量的代码,因为可以重用数据处理算法,而无须复制类型 基类型中的方法或成员。 特定的代码。 需要注意的是,尽管约束是可选的,但它们在开发一般 c撑的泛型能力由CLR在运行时支持,它既不同于C+类型时通常是必不可少的。没有它们,编译器将采取更为保 +在编译时所支持的静态模板,也不同于Java在编译器层守的类型安全方法,并且只允许在一般类型参数中访问 面使用“搽拭法”支持的简单的泛型。 Object级别功能.约束是一般类型元数据的一部分,以便客

文档评论(0)

小教资源库 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档