首页 > 其他 > 详细

【学习笔记】泛型

时间:2020-03-23 01:35:10      阅读:60      评论:0      收藏:0      [点我收藏+]

1、泛型类、泛型方法、泛型接口、泛型委托。

2、用到的设计思想:延迟声明(能推迟做的事情就尽量推迟做)。

3、语法糖:编译器自动帮我们识别类型,泛型不是简单的语法糖,它是框架升级和语法糖的双重结果。

4、泛型就是用一个东西来满足多种不同类型的需求的。

5、引入泛型前使用object作为类型参数有2个问题

  1)、装箱拆箱,性能损耗。传入一个int值(栈) ,object又在堆里面,如果把int传递进来,就会把值从栈里面copy到堆里(装箱)。使用的时候,又需要用对象值,又会copy到栈(拆箱)。

  2)、类型安全问题,可能会有,因为传递的对象是没有限制的。

6、泛型约束

/*
* 五种约束:
* 
* where T:struct  值类型约束:类型参数必须为值类型
* 
* where T:class   引用类型约束:适用于类、接口、委托、数组等,类型参数必须为引用类型
* 
* where T:new()   new()无参构造器约束:类型参数必须有一个公有的无参构造器
* 
* where T:<base class name>   基类约束:类型参数必须是指定的基类或是派生自指定的基类
* 
* where T:<interface>   接口约束:类型参数必须是指定接口或实现指定的接口,可以指定多个接口约束,约束接口也可以是泛型的
* 
* 
* 组合约束:用的不多
* 在约束列表中,第一个必须是引用类型约束或者值类型约束,或者是基类约束,然后才是接口约束,最后才是new()约束
* 指定引用类型约束或值类型约束的同时也指定基类约束是非法的
* 
* 同一个类型形参可以使用多个约束,中间用逗号隔开,例如:
* class Test<T> where T : Myclass, Interface, new(){......}
* 替换T的类型实参必须是继承Myclass类,且实现Interface接口,且拥有一个无参构造器
* 
* 在使用两个或多个类型形参时,也可以使用多条where子句分别为它们指定约束
*/

 

【学习笔记】泛型

原文:https://www.cnblogs.com/xyh9039/p/12549366.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!