问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请问这个泛型类型约束是什么意思?

发布网友 发布时间:2022-12-16 18:54

我来回答

1个回答

热心网友 时间:2024-10-03 19:26

要T是继承于A
where T: A
要T继承于B的
where T: B

在定义泛型类时,可以对客户端代码能够在实例化类时用于类型参数的类型种类施加*。如果客户端代码尝试使用某个约束所不允许的类型来实例化类,则会产生编译时错误。这些*称为约束。约束是使用 where 上下文关键字指定的。下表列出了六种类型的约束:

约束
说明

T:结构
类型参数必须是值类型。可以指定除 Nullable 以外的任何值类型。有关更多信息,请参见使用可以为 null 的类型(C# 编程指南)。

T:类
类型参数必须是引用类型;这一点也适用于任何类、接口、委托或数组类型。

T:new()
类型参数必须具有无参数的公共构造函数。当与其他约束一起使用时,new() 约束必须最后指定。

T:<基类名>
类型参数必须是指定的基类或派生自指定的基类。

T:<接口名称>
类型参数必须是指定的接口或实现指定的接口。可以指定多个接口约束。约束接口也可以是泛型的。

T:U
为 T 提供的类型参数必须是为 U 提供的参数或派生自为 U 提供的参数。这称为裸类型约束。

//---------------------------------
补充,由于泛型约束表达式全部是“AND”关系,所以不可能表示出“或”关系来,而且C#不支持多重继承,所以楼主的,这种或继承自A,或继承自B的需求,是无法实现的。追问

首先谢谢你的回复,我参考别人的项目是这样写的,编译也通过了,是否这是另的类型

泛型的高级用法

首先,类型约束是泛型的一种高级用法,它允许开发者在泛型参数上应用某些约束,以便在泛型代码中使用特定类型的方法。例如,可以约束泛型类型必须实现某个接口或继承自某个基类。这有助于减少类型转换的需要,并提高代码的可读性和可维护性。其次,泛型接口允许我们定义可以接受任何类型的参数的接口。这意味着...

泛型中new()构造函数参数约束到底是什么意思?

new() 约束的意思是 传入的类参数 必须具有可访问的无参数(或默认)构造函数。就是说传入的这个类必定能通过new()来进行实例化

Scala泛型中的Liskov哲学

泛型最常用在Collection集合当中,表示“这是一个装载什么元素的”集合。 同时,为了限制这个泛型E类型,我们又为泛型制定了上界,下界的概念,又称之为类型约束。在Scala中,类型约束的方式除了泛型上下界之外,还可以通过视图界定,和上下文界定来实现,这两种方式主要和之前所学习的隐式转换和隐式值有关联。 此外,设T1和T2...

C#中的where从句

泛型类定义时的where子句表示的是泛型类型约束,也就是对泛型需要满足的条件的一个限制。比如 where T: IComparable, new()说明,这里的泛型T必须实现IComparable接口,并且必须有公有无参数构造函数。因为泛型为中可能会用到一些与泛型相关的操作,但因为是泛型,所以不能保证使用时的泛型一定能进行这项...

java中什么叫泛型??

泛型允许您表达这样的类型约束,即 m 是一个将 String 键映射到 String 值的 Map。这可以消除代码中的强制类型转换,同时获得一个附加的类型检查层,这个检查层可以防止有人将错误类型的键或值保存在集合中。下面的代码示例展示了 JDK 5.0 中集合框架中的 Map 接口的定义的一部分:public interface Map&lt;K, V&gt; {...

C#泛型 类型约束

类型参数必须是指定的接口或实现指定的接口。可以指定多个接口约束。约束接口也可以是泛型的。T:U 为 T 提供的类型参数必须是为 U 提供的参数或派生自为 U 提供的参数。这称为裸类型约束。//--- 补充,由于泛型约束表达式全部是“AND”关系,所以不可能表示出“或”关系来,而且C#不支持多重继承...

C# 泛型的原理、引入、缓存、约束及泛型的“协变”和“逆变”

泛型缓存本质是一个泛型类,泛型类会根据调用的不同类型生成不同的副本;约束可分为:基类约束,接口约束,引用类型约束,值类型约束,无参数构造函数约束。为了架构层面上可能会产生类型安全的问题,所以引入协变和逆变。协变: Out 只能做返回值 ,不能做参数,其实是一种为了避开风险而存在的一种约束...

什么是泛型,泛型的作用是什么(泛型有什么作用)

但是DotNet的泛型有个比较制肘地方,就是你很难对数值类型(值类型)进行算法抽象,因为这牵涉到运算符重载的问题,同时DotNet的泛型的类型参数也不能约束成一个基元值类型(如int、double、float)。)它有什么优势?第一:源代码保护。(如果你知道C++模板对泛型的实现机制,就会知道C++在编译的时候根据...

TS泛型类、泛型接口、泛型函数

泛型是一种参数化数据类型,具有以下特点 1:定义时不明确,使用时必须明确成 某种具体数据类型 的数据类型【泛型的宽泛】 2:编译期间进行 数据类型安全检查 的数据类型【泛型的严谨】泛型类的格式: class 类名&lt;泛型形参类型&gt;{ } 泛型约束简单点说就是把泛型的具体化数据类型范围缩小 T e...

java中Map&lt;?,?&gt;是什么意思

&lt;?,?&gt;这个是泛型,在实例应用的时候,一个集合一般只存储一种类型的数据,所以我们可以通过泛型来约束集合中元素的类型,这个在多处都可以使用,比如在Collection&lt;T&gt;集合和Map&lt;T,T&gt;中通过泛型约束存储元素的数据类型;以下解释为什么泛型中只使用对象来约束数据类型:因为集合只能存储引用类型数据,所以在...

泛型类型参数约束 为什么泛型不能用基本类型 什么是泛型集合 泛型方法类型怎么指定 泛型约束 泛型约束的集合 如何限制泛型为枚举类型 返回值类型为泛型 对泛型类型的参数限制
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
抖音仅一人可见的作者知道吗? 白歆惠最新消息 白歆惠主要作品 白钦惠基本资料 风电运维公司有哪些 白歆惠出席节目 白歆惠主持经历 白歆惠人物轶事 ...唱的lalalali,lulalulali(啦啦啦啦哩,噜啦噜啦哩) ...今年6岁,想给孩子起个小名,望各位高手指点!!! 魔兽世界有爱插件背包为什么是感叹号 interface IRepository&lt;T&gt; where T : class 这样写是什么意思? 有爱插件物品全是叹号 网易有爱什么时候更新 gog版泰坦之旅下载了怎么用 群星铁人模式怎么作弊 防蓝光近视镜和防控眼镜哪个好 开车戴防蓝光的近视镜行吗 毛主席的名字的有什么含义? 《扫黑风暴》到底有多狠?光是预告曝光,主演孙红雷就被央视点名 为什么电视剧《风暴》找不到 楚嘉颖这个名字好不好听 见到美国人,他们最喜欢问你的第一个问题是? 三个可以问美国人的问题,英语 海康威视解绑了为什么扫描还是未解绑 海康威视录像盒刷新扫描为什么只能扫描到一个 海康威视摄像头帧扫描怎么用 明光邮政编码多少 海康4200扫描摄像头在哪 合肥市明光邮编 浴霸品牌排名大全(2016最新) 万象软件在进程里是哪个进程 在Pubwin2007网吧如何不让控制台监控你上网?? pubwin加钱破解问题 求写个能“挂起”某进程的批处理 电脑打不开国家开发银行网站 鲸云漫游兑换码多少 上面一个雨字头,中间三个横排的口 下雨一个巫 怎么读,意思如何, “霝”这个字下面加个巫婆的“巫” 怎么读? 王子猷出都,尚在渚下。旧闻桓子野善吹笛,而不相识。遇桓于岸上过, 世说新语中有关王子猷的故事 求 芳香之旅 百度网盘免费资源下载链接,谢谢 电影 芳香之旅 下载问题 求一部电影名称,记得女主坐火车,到一半火车中途停下,有一大片油菜_百度... 红河导演是谁 flash制作从一种形状变成另一种形状怎么做的? 急!!Flash CS3火柴人动画制作教程 求一套学习flash cs3 action script的详细教程 Flash CS3 开场效果如何制作 阴阳师超鬼王怎么看助战次数