ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C#基础语法之-泛型

2021-12-18 13:31:35  阅读:153  来源: 互联网

标签:C# 基类 list 语法 逆变 参数 协变 泛型


泛型:一共7个知识点

1.引入泛型,延迟声明

2.如何声明和使用泛型

3.泛型的好处和原理

4.泛型类,泛型方法,泛型接口,泛型委托

5.泛型约束

6.协变,逆变

7.泛型缓存

一.为啥会出现泛型,有啥用,啥时候用?

为什么有泛型?泛型有啥用???

问:为啥会有泛型?

答:回到根本上,简单讲就是在.net1.0的时候,不同的参数要做同一件事,要写很多方法。所以微软在2.0的时候就推出了新的语法,泛型。

 

有啥用?

答:出现泛型根本要解决的问题就是,不同的参数,做同一件事的问题。

 

问:啥时候用?

答:

1.当你写了好几个方法,除了参数不同,都是干同一件事的,这时就可以用泛型方法。

2.当你写了好几个类,除了参数不同,类都是干同一个事的,此时就要用泛型类。

3.当你写了好几个接口,除了参数不同,类都是干同一个事的,此时就要用泛型接口。

4.当你写了好几个委托除了参数不同,类都是干同一个事的,此时就要用泛型委托。

 

二.泛型种类

.net Framwork2.0第一次推出的一个语法泛型

泛型只有4类:泛型方法,泛型类,泛型接口,泛型委托 

泛型的特点,没有写死参数类型,调用的时候才指定类型,就叫【延迟声明】:把参数类型的声明推迟到调用

泛型发方法解决的问题,用一个方法,满足不同的参数类型;做相同的事

三.
-泛型约束
泛型约束--基类约束(不能是sealed):
1)可以调用基类的一切属性方法---权利
2)可以强制保证T基类或者基类的子类--义务

四.
1>.Net4.0出现的,本质上就是解决list<父类>=list<子类>之间相互转换的问题,因为之前只是理论上说的通,编译器会报错的,协变和逆变的出现就是为了解决它。
2>协变和逆变只能放在接口或者委托的泛型参数前面
3>out 协变修饰返回值 , in 逆变 修饰传入参数
4>协变描述:list<父类>=list<子类>
5>逆变描述:list<子类>=list<父类>

五.
-泛型缓存
1>简单的描述就是,每个泛型类,都会生成一个副本(就算里面有静态字段,静态方法,这些静态也会生成一个新的副本)
2>泛型缓存是不会释放的
3>泛型缓存效率高,比字典高多了

 

插入语法知识:

装箱和拆箱

每一个线程都有运行【栈】,栈里面的东西等线程运行结束的时候,需要释放的,栈里面存放值类型,【堆】里面存放引用类型是对象共享的。

 

标签:C#,基类,list,语法,逆变,参数,协变,泛型
来源: https://www.cnblogs.com/dfcq/p/15574366.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有