为了账号安全,请及时绑定邮箱和手机立即绑定

C# 如何理解如下泛型约束 class A<T>:where T:class{}

C# 如何理解如下泛型约束 class A<T>:where T:class{}

UYOU 2019-04-19 16:29:17
如题c#中一个类继承class是什么含义?如publicclassA:class{}更新谢谢@边城狂人,问题的由来是这样的,我在某个地方看到过一段代码,大体是:publicclassAwhereT:class{}我将这个泛型约束理解成了普通的类继承,所以才提出上面错误的问题。@HSFZXJY我不认为这是一个特别基础的问题,sf上不应该只是写高冷的文章和问答,基础的问题不应该被忽视。问题重新修改为:如何理解泛型类的如下约束?publicclassAwhereT:class{}
查看完整描述

2 回答

?
MM们

TA贡献1886条经验 获得超2个赞

泛型约束就好说了嘛,在泛型类型定义之后(class中或者method中)使用where约束泛型类型,有点像继承的语法。
可以直接参考微软的类型参数的约束(C#编程指南)
约束
说明
whereT:struct
类型参数必须是值类型。可以指定除Nullable以外的任何值类型。有关更多信息,请参见使用可以为null的类型(C#编程指南)。
whereT:class
类型参数必须是引用类型;这一点也适用于任何类、接口、委托或数组类型。
whereT:new()
类型参数必须具有无参数的公共构造函数。当与其他约束一起使用时,new()约束必须最后指定。
whereT:
类型参数必须是指定的基类或派生自指定的基类。
whereT:
类型参数必须是指定的接口或实现指定的接口。可以指定多个接口约束。约束接口也可以是泛型的。
whereT:U
为T提供的类型参数必须是为U提供的参数或派生自为U提供的参数。
                            
查看完整回答
反对 回复 2019-04-19
  • 2 回答
  • 0 关注
  • 475 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信