泛型的约束有哪几种?(C#)

devtools/2025/2/28 14:47:09/

目录

 1  值类型约束(where T : struct)

 2  引用类型约束(where T : class)

 3  无参构造函数约束(where T : new ())

 4  基类约束(where T : <基类名>)

 5  接口约束(where T : <接口名>)

 6  类型参数约束(where T : U)

 7  多个约束组合


 1  值类型约束(where T : struct)

要求类型参数T必须是值类型,不能是引用类型。所有的内置数值类型(如intdouble等)、enum类型以及自定义的结构体等都满足这种约束。

 2  引用类型约束(where T : class)

规定类型参数T必须是引用类型,包括类、接口、委托、数组(数组在 C# 里是引用类型,不管里面装的值类型还是引用类型的数据。这可能和其他一些语言不同,比如 C++ 中的数组是值类型。C# 将数组设计为引用类型,是为了统一内存管理、支持继承多态以及保持与其他引用类型的一致性。这一设计简化了开发者对数组的使用,并充分利用了 CLR(公共语言运行时)的特性。)等。

 3  无参构造函数约束(where T : new ())

要求类型参数T必须具有一个无参数的公共构造函数,这样在泛型代码中才可以使用new关键字创建T的实例。

 4  基类约束(where T : <基类名>)

表明类型参数T必须是指定基类或从该基类派生的类。

 5  接口约束(where T : <接口名>)

意味着类型参数T必须实现指定的接口,保证在泛型代码中可以调用接口中定义的成员。

 6  类型参数约束(where T : U)

表示类型参数T必须是另一个类型参数U或从U派生的类型,用于建立类型参数之间的继承关系约束。

 7  多个约束组合

可以同时使用多个约束来更精确地限制类型参数。

class MyContainer<T> where T : class, IComparable<T>, new()
{// T必须是引用类型,实现了IComparable<T>接口,并且有一个无参构造函数
}


http://www.ppmy.cn/devtools/163377.html

相关文章

Java 集合框架大师课:集合流式编程革命(三)

&#x1f680; Java 集合框架大师课&#xff1a;集合流式编程革命&#xff08;三&#xff09; &#x1f525; 系列成就&#xff1a;集合框架战力值突破 90%&#xff01;建议边撸代码边循环《孤勇者》进入心流状态 &#x1f3a7; 第一章&#xff1a;流式编程总动员 1.1 现实中的…

AI 与光学的融合:开启科技变革新征程

在当今科技发展的浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;与光学这两个看似独立的领域&#xff0c;正逐渐紧密交织&#xff0c;开启了一场影响深远的科技变革。AI 技术凭借强大的数据分析、模式识别和智能决策能力&#xff0c;与光学在信息传输、成像、传感等方面…

网页制作10-html,css,javascript初认识の适用XHTML

一、简介&#xff1a; Xhtml是extensible hypertext markup language的缩写。它是由国际W3C组织制定并公布发行的。是一个过渡技术&#xff0c;结合了部分xml的强大功能及大多数html的简单特性。 Advantage. Xhtml提倡更简洁规范的代码。 Xhtml.文档在旧的基于的浏览器中&…

k8s集群部署

集群结构 角色IPmaster192.168.35.135node1192.168.35.136node2192.168.35.137 部署 #需在三台主机上操作 //关闭防火墙 [rootmaster ~]# systemctl disable --now firewalld//关闭selinux [rootmaster ~]# sed -i s/enforcing/disabled/ /etc/selinux/config//关闭swap分区…

【数据结构】(11) Map 和 Set

一、Map 和 Set 的简介 1、Set 和 Map Map 和 Set 是集合类框架学习的最后一部分。Map 和 Set 都是接口&#xff0c;需要通过 TreeSet、HashSet 和 TreeMap、HashMap 实例化。注意&#xff0c;Set 实现了 Collection&#xff0c;Map 并没有。 Set 存放的是键&#xff08;Key&a…

【Python修仙编程】(二) Python3灵源初探(3)

第一部分&#xff1a;乾坤袋的秘密与修炼之路 在修仙界&#xff0c;有一个古老的传承&#xff0c;名为《Python无极心法》&#xff0c;它蕴含着强大的力量&#xff0c;能够助修仙者突破重重境界&#xff0c;领悟宇宙天地的奥秘。而要修炼此心法&#xff0c;必须先从基础的“乾…

【前端基础】Day 1 HTML

总结&#xff1a; 1. Web标准的构成 2. 基本标签 目录 1. Web标准的构成 2. 基本标签 2.1快捷键 2.2.1标题标签 2.2.2段落和换行标签 2.2.3文本格式化标签 2.2.4div和span标签 2.3.1 图像标签和路径 2.3.2路径 2.3.3超链接标签 2.4注释标签 2.5特殊字符 1. Web标准…

【蓝桥杯嵌入式】各模块学习总结

系列文章目录 留空 文章目录 系列文章目录前言一、LED模块1.1 赛题要求1.2 模块原理图1.3 编写代码1.4 赛题实战 二、LCD模块2.1 赛题要求2.2 模块原理图2.3 编写代码2.4 赛题实战 三、按键模块3.1 赛题要求3.2 模块原理图3.3 编写代码3.4 赛题实战 四、串口模块4.1 赛题要求4…