泛型:一共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#基础语法之-泛型的更多相关文章

  1. Swift基础语法学习总结(转)

    Swift基础语法学习总结 1.基础  1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型 ...

  2. Swift2.1 语法指南——泛型

    原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...

  3. Swift基础语法学习总结

    Swift基础语法学习总结Swift高级语法学习总结Swift语法总结补充(一) 1.基础  1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift ...

  4. App架构师实践指南一之App基础语法

    第二章:App基础语法1.编程范式编程范型或编程范式(programming paradigm),是指从事软件工程的一类典型的编程风格.常见的编程范式有过程化(命令行)编程.事件驱动编程.面向对象编程 ...

  5. Java基础教程:泛型基础

    Java基础教程:泛型基础 引入泛型 传统编写的限制: 在Java中一般的类和方法,只能使用具体的类型,要么是基本数据类型,要么是自定义类型.如果要编写可以应用于多种类型的代码,这种刻板的限制就会束缚 ...

  6. C#基础语法,快速上収C#

    C#代码基础语法 对新手的帮助很大,可以尝试多看看然后在敲敲 // 单行注释以 // 开始 /* 多行注释是这样的 */ /// <summary> /// XML文档注释 /// < ...

  7. 带你了解Typescript的14个基础语法

    摘要:Typescript可以说是JavaScript的超集,在JS的基础上新增了许多语法特性,使得类型不再可以随意转换,能大大减少开发阶段的错误. 本文分享自华为云社区<Typescript基 ...

  8. Golang 基础之基础语法梳理 (三)

    大家好,今天将梳理出的 Go语言基础语法内容,分享给大家. 请多多指教,谢谢. 本次<Go语言基础语法内容>共分为三个章节,本文为第三章节 Golang 基础之基础语法梳理 (一) Gol ...

  9. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

随机推荐

  1. 【原创】记一次对X呼APP的渗透测试

    获取CMS并本地安装 X呼是一款开源的客服CMS系统,访问官网,下载安卓版本的app和源码本地搭建: 发现这cms预留admin表中的用户就不少.... 直接用预留的密码解密,然后就能登录手机APP了 ...

  2. HCNP Routing&Switching之链路聚合

    前文我们了解了MSTP相关话题,回顾清参考https://www.cnblogs.com/qiuhom-1874/p/16268682.html:今天我们来聊一聊链路聚合相关话题: 链路聚合是链路高可 ...

  3. CenterNet训练时黑白图片不能画框的问题

    解决CenterNet在detect.py中不能画框的问题 在第centernet.py的第198行的中加上这一行 image = image.convert('RGB')

  4. Docker的网络

    概述 docker使用Linux桥接网卡,在宿主机虚拟一个docker容器网桥(docker0),docker启动一个容器时会根 据docker网桥的网段分配给容器一个IP地址,称为Container ...

  5. wappalyzer 上各种开源框架功能

    Underscore.js  官网地址:https://underscorejs.org/     一个JavaScript实用库,提供了一整套函数式编程的实用功能,但是没有扩展任何JavaScrip ...

  6. powershell命令总结

    2021-07-21 初稿 ps命令采用动词-名词的方式命名,不区分大小写.默认当前文件夹为当前路径./.除去-match使用正则表达式匹配外,其他都使用*和?通配符. 速查 管道命令 前一个的输出作 ...

  7. 【Redis】Redis Cluster-集群故障转移

    集群故障转移 节点下线 在集群定时任务clusterCron中,会遍历集群中的节点,对每个节点进行检查,判断节点是否下线.与节点下线相关的状态有两个,分别为CLUSTER_NODE_PFAIL和CLU ...

  8. v-if和v-for哪个优先级更高?

    首先在实际开发阶段,不应该把v-if和v-for在同一个标签中使用, 在vue2中,v-for的优先级是高于v-if的,如果同时出现,每次渲染都会先执行循环再判断条件,无论如何循环都不可避免,浪费了性 ...

  9. zabbix监控apache80端口

    1.修改zabbix_agentd.conf 修改# EnableRemoteCommands=0 -->去掉注释修改为1--> EnableRemoteCommands=1 ###允许客 ...

  10. BetterScroll源码阅读顺便学习TypeScript

    开头 TypeScript已经出来很多年了,现在用的人也越来越多,毋庸置疑,它会越来越流行,但是我还没有用过,因为首先是项目上不用,其次是我对强类型并不敏感,所以纯粹的光看文档看不了几分钟就心不在焉, ...