(六)笔记.net core学习之泛型、逆变/协变、泛型缓存

news2025/8/3 0:07:27

1.泛型:延迟声明:不指定参数类型,调用是才指定,把参数类型的声明推迟到调用
2.泛型包含:泛型类、泛型方法、泛型接口、泛型委托、逆变/协变、泛型缓存
3.泛型约束
    1.接口约束 Where T : 接口
    2.基类约束 Where T : 基类
    3.引用类型约束 Where T : class
    4.值类型约束 Where T : struct  默认default(T) 会根据T的不同赋予默认值
    5.无参数构造函数约束 Where T : new()
    6.约束类型不能是密封类sealed
    7.约束可以叠加 where T : A,B,new()....
4.协变和逆变 例如两个类
    public class Bird{}
    public class Sparrow:Bird{}
    1.协变: 当你 Bird b = new Sparrow()没问题,但 List<Bird> b = new List<Sparrow>()时就会报错,
      此时你只能用 List<Bird> l = new List<Sparrow>().Select(c =>(Brid)c).ToList()把每一个对象转换为Bird才可以,因为两个List集合没有父子关系
      此时可以使用协变,协变只能用于接口和委托,
      IEnumerable<Bird> list = new IEnumerable<Sparrow>()
      Fun<Bird> f = new Fun<Sparrow>(()=>null)
    2.协变在声明接口时加参数out,只能是返回结果,不能当作参数


    3.逆变 声明接口时参数加 in,不能当作返回值,只能当作参数使用,左边是子类,右边可以是父类也可以是子类,和协变相反

 

     4.协变和逆变同时使用

如:声明时,同事赋予in out 


5.泛型缓存:
    1.每个不同的T都会生成一个不同的副本;
    2.适合不同的类型,需要缓存一份数据的场景;效率高;
    3.但相同类型的数据只会缓存一次;
    4.缓存不能释放 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/16020.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

i++的错误使用

文章目录问题题目完整代码问题 在执行以下代码之前&#xff0c;i的值为8&#xff0c;length的值为10。 while (i < length) {tempArray[i] middle[i]; }我预想中的结果应该是tempArray[8] middle[8];&#xff0c;然后i。 结果tempArray[8]没有被赋值&#xff1a; 反倒是…

树/二叉树/森林之间的相互转换 与遍历

森林就是多棵树的集合&#xff0c;但是森林也可以只有一棵树&#xff0c;二叉树是一种特殊的树&#xff0c;固定的度为2&#xff0c;这是基本前情提要&#xff5e; 树常见的存储方式有三种&#xff1a; &#xff08;1&#xff09;双亲表示法 仅用定义一个结点对象&#xff0…

windows添加node环境

参考&#xff1a;npm和cnpm&#xff08;windows&#xff09;安装步骤_李疆~的博客-CSDN博客_cnpm一、什么是npm和cnpmnpm&#xff08;node package manager&#xff09;&#xff1a;nodejs的包管理器&#xff0c;用于node插件管理&#xff08;包括安装、卸载、管理依赖等&#…

YRCloudFile V6.9.0 加速企业在大数据应用技术创新

近日&#xff0c;焱融科技发布分布式文件存储产品 YRCloudFile 6.9.0 版本。该版本在功能和性能方面有多项技术性突破&#xff0c;主要包括大数据应用无缝对接 Hadoop &#xff0c;为大数据应用提供高性能存储平台&#xff1b;独有的 Dataload 功能和智能分层细粒度化&#xff…

查询不为空的字段

数据&#x1f4ca; idnameparent_id1党组织02陕西党委1314Null25渭南党委Null 实验⁉️ 查询int类型不为空的字段 select * from org where parent_id <> ""❌mybatis 中的 if判断会把整形中的 0 识别为false(空) select * from org where parent_id ! &quo…

体会多态的好

目录 继承和组合&#xff1a; 区别和联系 1.安全性角度&#xff08;封装性&#xff09; 2.灵活性角度&#xff08;牵一发动全身&#xff09; 多态&#xff1a; 一.怎样实现多态 1.完成向上转型 直接赋值&#xff1a;​​​​​​​ 方法传参 方法的返回值 2.完成方法重…

零基础数据科学学习 Python 的 4 个阶段

前言 如果你一直在自学 Python&#xff0c;那么你可能看过无数教程并遵循许多指南来获得这项技能&#xff0c;但是你怎么知道自己走在正确的道路上来掌握这项数据科学的基本技能&#xff1f; &#xff08;文末送读者福利&#xff09; Python 是一种实用的编程语言&#xff0c…

获取CSV文件,转成Excel格式的文件供用户从浏览器下载

前言 最近这十几天每天都很充实&#xff0c;刚完成了几个小需求&#xff1b;今天简单记录一下其中一个&#xff1a;从某系统获取csv文件&#xff0c;然后处理成可供用户在浏览器中下载的Excel文件&#xff1b; 这其中有解除到新的内容&#xff0c;也有利用项目已有的部分功能…

智慧图书馆解决方案-最新全套文件

智慧图书馆解决方案-最新全套文件一、建设背景二、思路架构三、建设方案四、获取 - 智慧图书馆全套最新解决方案合集一、建设背景 现下&#xff0c;传统图书馆已经难以适应时代的发展&#xff0c;图书盘点繁琐、管理模式落后、阅读时间和场地受限等问题&#xff0c;迫使传统图…

148. SAP UI5 表格数据如何导出成 Excel 文件(Table Export As Excel)

本教程前一步骤,我们在介绍 SAP UI5 SmartTable 时,提到了它的 Excel 导出功能。如果将 iseExportToExcel 设置为 true,就可以启用 Excel 导出功能,将 Table 控件显示的数据,导出成本地 Excel 文件。 我们仍然秉承本教程一贯从易到难的学习思路,先暂时不去碰 Smart Table…

30天消化MyBatis源码解析笔记,吊打面试官,offer接到手软

MyBatis 是一个优秀的 Java 持久化框架&#xff0c;SSM 框架组合&#xff08;Spring SpringMVC Mybatis&#xff09;&#xff0c;依赖 MyBatis 搭建的项目更是数不胜数&#xff0c;在互联网公司的使用中&#xff0c;占据了大片江山&#xff0c;你在使用 MyBatis 吗&#xff1…

嵌入式开发:RTOS调试——处理计时问题

毫无疑问&#xff0c;当你开始在嵌入式开发中使用实时操作系统(RTOS)时&#xff0c;会有一个学习曲线。你将在更高的抽象层次上工作&#xff0c;使用或多或少的并行任务&#xff0c;而不仅仅是子例程&#xff0c;并且你需要考虑你的任务应该如何彼此共享数据和处理器时间。你需…

一个系统五个场景,vivo的IoT能否以“慢”取胜?

近年来物联网声浪喧嚣尘上&#xff0c;但其实从移动互联网到IoT只有一步之遥。原因在于手机可以很好的完成“控制中枢”的作用&#xff0c;以手机为核心在IoT领域“开枝散叶”是目前行业的主流选择&#xff0c;这也是小米、华为等手机巨头在IoT领域如鱼得水、产品众多的重要原因…

企业如何防备密码攻击

在身份安全周&#xff0c;了解密码在网络安全中的重要性很有必要&#xff0c;如果您不小心&#xff0c;密码很容易被泄露。ManageEngine ADSelfService Plus如何帮助强化密码并增强企业组织安全性的呢&#xff1f; 现在是 2022 年——密码在今天仍然适用吗&#xff1f; 技术…

Docker(九)—— Docker 网络

我们之前通过端口映射实现过外部主机对容器的访问&#xff0c; 那如果想要实现两个容器之间的通信怎么办&#xff1f;用已有的经验&#xff0c;是像图中蓝色的线那样走吗&#xff1f; 一、Docker0网络 我们运行一个容器&#xff0c;进入容器内部后发现容器也有自己的IP地址。 而…

磁盘占用高问题如何排查?三步教你搞定

作者简介&#xff1a;杨嘉力&#xff0c;OceanBase开源内核高级工程师。 通常情况下&#xff0c;数据库对磁盘的占用量会随着业务的接入时间和业务数据量大增而不断上升&#xff0c;导致磁盘空间不足&#xff0c;进而发生数据无法写入、数据库无法重启等问题。这时我们就需要排…

CENTOS上的网络安全工具(十三)搬到Docker上(1)?

鉴于在集群上构建安全工具的情况越来越频繁&#xff0c;并且现在一些安全工具也提供了Docker形式的部署&#xff0c;再停留在虚拟机yum的部署方式似乎已经不太合时宜了。所以在再一次碰到一个安全工具需要使用docker安装的时候&#xff0c;我们毅然&#xff08;被逼&#xff09…

[附源码]SSM计算机毕业设计中小企业人事管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]Python计算机毕业设计安庆师范大学校园互助平台

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

C语言学习记录(十二)之字符串和字符串函数

文章目录一、字符串和字符串I/O1.1 定义字符串1.1.1 字符串字面量(字符串常量)1.1.2 字符串数组和初始化1.1.3 数组和指针1.1.4 数组和指针的区别二、字符串输入2.1 分配空间2.2 gets()函数 (不建议使用)2.3 gets()的替代品2.3.1 fgets()函数(和fputs())2.3.2 gets_s()函数2.3.…