我们在编写程序时,经常遇到两个模块的功能非常相似,只是一个是处理int数据,另一个是处理string数据,或者其他自定义的数据类型,但我们没有办法,只能分别写多个方法处理每个数据类型,因为方法的参数类型不同。

泛型用用一个通过的数据类型T来代替object,在类实例化时指定T的类型,运行时(Runtime)自动编译为本地代码,运行效率和代码质量都有很大提高,并且保证数据类型安全。

C#泛型类在编译时,先生成中间代码IL,通用类型T只是一个占位符。在实例化类时,根据用户指定的数据类型代替T并由即时编译器(JIT)生成本地代码,这个本地代码中已经使用了实际的数据类型,等同于用实际类型写的类,所以不同的封闭类的本地代码是不一样的。

按照这个原理,我们可以这样认为:泛型类的不同的封闭类是分别不同的数据类型。

C# 泛型集合之非泛型集合类与泛型集合类的对应:

ArrayList对应List

HashTable对应Dictionary

Queue对应Queue

Stack对应Stack

SortedList对应SortedList

未完待续

转载于:https://www.cnblogs.com/oralig/p/7694680.html

C# 中泛型与非泛型?(摘)相关推荐

  1. [C#]泛型与非泛型集合类的区别及使用例程,包括ArrayList,Hashtable,ListT,DictionaryTkey,Tvalue,SortedListTkey,Tvalue,...

    今天有空正好把泛型和非泛型集合类写了一个比较,并做了个的例程,可以比较清楚的理解它们概念和使用方法. 泛型与非泛型集合类在C#程序中是非常重要的一个基础概念,这里列一个表来进行对比: 非泛型集合类 泛 ...

  2. 扩展方法必须在非泛型静态类中定义

    扩展方法必须在非泛型静态类中定义: public class CustomerHelperClass{public static MvcHtmlString CreateImage(string p_ ...

  3. java 泛型 class t_java 泛型中classT 和T的区别是什么?

    public boolean edit(T entity) 和public T get(Class c, Serializable id)中这两种参数的定义和调用有什么区别? public boole ...

  4. 学妹不懂Java泛型,非让我写一篇给她看看(有图为证)

    前言 在学习java掉头的日子里很多青年脱坑,同时也有很多青年入坑,但入坑的时候可能没有什么好的指导或者学习方法可能头发掉的一发不可收拾-- 笔者有个学妹就遇到了相同的境遇,学弟被泛型搞得头晕目眩,搞 ...

  5. 泛型算法STL中的迭代器,泛型算法,萃取机的一个实现案例

    迭代器介绍: 迭代器其实是一个类,但是因为重载了* ++等指针操作的符号,所以有着和指针类似的共能,对于一个自己写的类,如果想使用迭代器这种功能就得自己写了,STL的标准容器都有迭代器,迭代器作用于, ...

  6. java 泛型 t_Kotlin(2) 泛型与集合

    前言 以一个java老鸟的角度,如何去看 kotlin.Java源代码应该如何用Kotlin重构.如何正确学习kotlin并且应用到实际开发中.本文将会探究. 本文分两大块,重难点和潜规则. 重难点: ...

  7. 第五节:泛型(泛型类、接口、方法、委托、泛型约束、泛型缓存、逆变和协变)

    一. 泛型诞生的背景 在介绍背景之前,先来看一个案例,要求:分别输出实体model1.model2.model3的id和name值,这三个实体有相同的属性名字id和name. 1 public cla ...

  8. java泛型特点_java泛型简单总结

    Java泛型简单总结 1)基本概念: 泛型(Generic Type或Generics)是 对Java语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看做是使用参数化类型时 ...

  9. java泛型约束_java泛型

    泛型 1)在编译时,由编译器约束放入集合中的类型 2)在运行时,编译器会擦除原泛型类型 3)泛型二边要么都不使用约束,要么二边约束一致类型,同时二边必须使用引用类型 4)为了与JDK1.4兼容,泛型可 ...

最新文章

  1. h5在手机端实现简单复制
  2. WDK开发环境构建驱动程序入门、Windows驱动程序的Check Build和Free Build
  3. docker zookeeper kafka kafka-manager 本地hbase hadoop
  4. java的equals方法_Java Date equals()方法与示例
  5. java方法重载两个数相加_java方法重载实验:判断键盘输入的两个数据的类型后进行比较...
  6. 淘宝面试-Strcpy与memcpy两函数的经典实现
  7. 这个黑科技耳机方便又时尚,听歌也不怕坐过
  8. Tricks(三十二)—— 遍历全部的子串(子数组)
  9. python打印tensor_如何在TensorFlow中打印SparseTensor内容?
  10. 【Redis监控工具之treeNMS 】
  11. 图像处理农业应用sci_新增3本SCI期刊,JCR二区、SCI, EI双收 录,影响因子多年增长...
  12. 在html中不是链接目标属性,在HTML中,()不是链接的目标属性。A、selfB、newC、blankD、Top - 扁豆云问答...
  13. 伤害世界不显示服务器,伤害世界Hurt world服务器挑选指南 不卡不清档无权限服务器挑选教程...
  14. 【论文导读】- Subgraph Federated Learning with Missing Neighbor Generation(FedSage、FedSage+)
  15. 网络工程设计教程系统集成方法第3版-第1章 网络工程设计概述
  16. vscode使用vetur解决代码换行、格式化、常量问题
  17. poi实现的excel模板数据填充
  18. 软件工程常见费用参考标准
  19. PPT:非接触供电AGV技术解析
  20. pr cpu100%_pr教程资源

热门文章

  1. 解决Tomcat启动时出现的The APR based Apache Tomcat Native library异常
  2. async/await的实质理解
  3. [译]Java 设计模式之命令
  4. 使用pdb调试python
  5. Husband的忏悔书(IT攻城狮)
  6. 最新黑链代码expression:隐藏链接代码
  7. 一个简单的DELPHI自定义事件的例子(转)
  8. pytorch--nn.Sequential学习
  9. .NET 关于Geometry转GeoJson
  10. jquery 判断元素内容是否为空