没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|其它|编辑:郝浩|2010-01-07 10:07:04.000|阅读 684 次
概述:.NET Framework应用程序能够为开发人员提供一个可以进行WEB应用程序部署的开发环境,最大程度上帮助程序员提高编程效率。.
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
.NET Framework应用程序能够为开发人员提供一个可以进行WEB应用程序部署的开发环境,最大程度上帮助程序员提高编程效率。.NET Framework泛型是在.NET Framework2.0的公共语言运行库(CLR)中的增加的一项新功能,类似于C++的[[模版(程序设计语言),但不如C++的模板灵活,不过也有一些自己的特性。
泛型为.NET Framework引入了类型参数的概念,这样便可以设计出这样的类和方法:它们把指定类型的工作推迟到客户端代码声明并实例化类或方法的时候执行。比如,通过泛型类型参数T,程序员就可以编写其他客户端代码能够使用的单个类,而不用担心强制转换或装箱操作而带来的额外的运行成本或风险。
.NET Framework泛型编程
泛型类和方法较之非泛型类和方法具有更高的可用性、类型安全和效率,且通常用在集合和集合上运行的方法中。在.NET Framework2.0的类库中添加了一个新的命名空间System.Collections.Generic,其中含有一些新的基于泛型的集合类。微软建议程序员在设计面向.NET Framework 2.0的应用程序时不要使用旧的非泛型集合类(像ArrayList集合类),而去使用新的泛型集合类。
当然,程序员也可以创建自己的泛型类和方法,提供自己需要的解决方案,但微软不推荐自己创建泛型类,而建议使用.NET Framework类库中提供的List
可以通过泛型类型参数传递一个类型(如一个类TestClass
.NET Framework泛型类型参数
在定义泛型类或方法中,类型参数是客户端程序实例化泛型类变量时指定的类型占位符。泛型类不能像通常的类那样使用,因为它实际上并不是一个类型,可能更像一个类型的蓝图。要使用泛型类,客户端代码必须要指定尖括号中的类型参数并实例化类型才能构造类型。指定的类型参数可以是编译器可以识别的任何类型,并且可以构造任意数目的使用不同类型参数的实例。
命名规则
通常,微软推荐采用如下命名规则:
除非单个字母可以让其他编写者了解其含义,而描述性名称并不能带来更多其他的意义,应该使用描述性短语作为类型参数的名称
推荐使用T作为单个字母类型参数的参数名
应该将T作为有描述性的类型参数名前缀
推荐在铲水泥各种指出对这个类型参数的约束(如将带有 ISession 约束的参数名写为TSession)
.NET Framework泛型参数的约束
对于泛型参数的约束是指对客户端代码实例化类时指定的类型参数进行限制,这样如果客户端的程序参试使用某个不允许使用的类型实例化类时会产生编译时错误。
约束采用where上下文关键字指定。
为什么使用约束
若要对泛型列表中的项与其他某个项进行比较,便一起需要在一定程度上保证她说调用的运算符或方法可以得到指定的类型参数的支持。这个保证正是建立在对泛型类定义的一个或多个约束获得的。一旦编译器得到了这样的保证,它就能够允许在泛型类中调用一些无约束的泛型中不允许使用的方法。
未绑定的类型参数
没有进行约束的泛型类型参数称为未绑定的类型参数。
当使用未绑定的类型参数时,相对于使用了约束的类型参数,有以下规则:
不允许使用!=和==运算符,因为编译器无法保证获得实例化时赋予的类型参数的支持;但可以与null进行比较。如果类型参数为值类型的话,一定返回false。
可以与System.Object将互相转换,也可以将它们显式地转换为任何借口类型。
裸类型约束
泛型类
泛型类可以拥有至少一个泛型类型参数,泛型类型参数可以代替泛型类的字段、属性、方法的参数和返回值、事件的参数和返回值、构造函数的参数的类型,也可作为内部类和基类以及实现接口的泛型类型参数。
泛型类必须在创建其实例时明确指定其所有泛型类型参数的类型。泛型类的构造函数不能自动推断其泛型类型的泛型类型参数。
如果从泛型类派生,可以选择确定的泛型类型参数,也可以用泛型派生类,利用泛型派生类的泛型类型参数确定基类的泛型类型参数。
泛型接口
泛型接口的使用大体上与泛型类相同,只是接口不允许包含字段和构造函数,也不允许创建实例。实现接口时,同样也可以选择实现确定的泛型类型接口,或者利用泛型类型参数确定接口的泛型类型参数。
.NET Framework泛型方法
泛型方法可以拥有至少一个泛型类型参数,泛型类型参数可以作为方法的参数或返回值的类型。泛型方法不用明确指定各泛型类型参数,可由上下文自动推断,如果上下文无法自动推断,则必须明确指定。
泛型委托
泛型委托的使用大体上与泛型方法相同,泛型委托的泛型类型参数可以在创建时通过上下文自动推断。泛型委托实例总是具有确定的泛型类型参数。
反射
.NET Framework泛型和C++中模版的区别
泛型和模版都是用于提供类型参数支持的语言功能,但这两者有着诸多差异。
从语法层面上来说,一般认为泛型是一种相对模版简单的方法,而不具有模版的复杂性。但同时,泛型也不能提供模版的完整功能。
另一方面,从实现层面,泛型的替换是在运行时执行的,这样可以为实例化的对象保留泛型类型的信息。
下面列出了泛型和模版之间的主要区别:
泛型没有提供与模版相同程度的灵活性(如泛型不能调用算数运算符)
泛型不允许非类型模版参数(如template C
泛型不支持显式的特定类型模版的自定义实现
泛型不支持类型参数子集的自定义实现
泛型中不允许将类型参数作泛型类型的基类
泛型不允许类型参数具有默认类型,而必须在实例化时指定
.NET Framework泛型类型参数自身不能是泛型,但C++确实允许模版参数。
C++允许程序员编写可能对模版中某些类型参数无效的代码,然后将检查该代码中是否有用作类型参数的特定类型。比如说可以在C++中编写对类型参数对象的算术运算符的函数,这样在用不支持这些运算符的类型实例化模版时出现出现错误;而泛型是不允许这样的,它则要求相应地编写类当中的代码,使他们能够满足任何约束的类型。因此唯一允许的语言构造是那些能够从约束中推导出来的结构。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:网络转载面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号