atitit.泛型编程总结最佳实践 vO99 java c++ c#.net php
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了atitit.泛型编程总结最佳实践 vO99 java c++ c#.net php,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1669字,纯文字阅读大概需要3分钟。
内容图文
atitit.泛型编程总结最佳实践 vO99 java c++ c#.net php
\
标签... 2' ref='nofollow'>4. 泛型方法定义2::后定义,方法也需要加
meth(); 2' ref='nofollow'>5. 调用泛型方法::: cls.
1. 泛型历史
泛型编程(Generic Programming)最初提出时的动机很简单直接:发明一种语言机制,能够帮助实现一个通用的标准容器库。所谓通用的标准容器库,就是要能够做到,比如用一个List类存放所有可能类型的对象这样的事;泛型编程让你编写完全一般化并可重复使用的算法,其效率与针对某特定 数据类型 而设计的算法相同。泛型即是指具有在多种 数据类型 上皆可操作的含意,与模板有些相似。STL巨大,而且可以扩充,它包含很多计算机基本算法和数据结构,而且将算法与数据结构完全分离,其中算法是泛型的,不与任何特定数据结构或对象类型系在一起。
由来
泛型编程最初诞生于C++中,由Alexander Stepanov[2]和David Musser[3]创立。目的是为了实现C++的STL( 标准模板库 )。其语言支持机制就是模板(Templates)。模板的精神其实很简单:参数化类型。换句话说,把一个原本特定于某个类型的算法或类当中的类型信息抽掉,抽出来做成模板参数T。比如qsort泛化之后就变成了:
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
2. 泛型的机制 编辑
机制
C#泛型代码在被编译为IL代码和无数据时,采用特殊的 占位符 来表示泛型类型,并用专有的IL指令支持泛型操作。而真正的泛型实例化工作以"on-demand"的方式,发生在 JIT编译 时。
编译机制
1. 第一轮编译时, 编译器 只为Stack<T>(栈算法)类型产生“泛型版”的IL代码与元数据-----并不进行泛型类型的实例化,T在中间只充当 占位符
2. JIT编译 时,当JIT编译器第一次遇到Stack<int>时,将用int替换“泛型版”IL代码与元数据中的T---进行泛型类型的实例化。CLR为所有类型参数为“ 引用类型 ”的泛型类型产生同一份代码;但如果类型参数为“ 值类型 ”,对每一个不同的“值类型”,CLR将为其产生一份独立的代码。
3. 泛型方法定义1::前定义
public static <atiType,retType> retType reduceO4(atiType obj, Func function) {
4. 泛型方法定义2::后定义,方法也需要加<T>标签...
public void bindList2grid<T>(List<T> li, DataTable dt)
{
5. 调用泛型方法::: cls.<String>meth();
6. //反回值为范型
public static T getValue<T>(object entity, string fieldName)
7. 参考
paip.使用泛型时未能找到类型或命名空间名称“T - attilax的专栏 - 博客频道 - CSDN.NET.htm
paip.自定义java 泛型类与泛型方法的实现总结 - attilax的专栏 - .
原文:http://blog.csdn.net/attilax/article/details/39215243
内容总结
以上是互联网集市为您收集整理的atitit.泛型编程总结最佳实践 vO99 java c++ c#.net php全部内容,希望文章能够帮你解决atitit.泛型编程总结最佳实践 vO99 java c++ c#.net php所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。