“where:class,new()”和“where:new()”之间有什么区别吗?

时间:2016-07-20 13:42:33

标签: c# generics

在C#编写泛型类或函数时,where : class, new()where : new()之间有什么区别吗? new()是否也暗示它也是class

据我所知this结构不能有无参数构造函数

2 个答案:

答案 0 :(得分:4)

  

new()是否也暗示它也是class

不,new()只是意味着该类型具有公共默认构造函数。类和结构都可以有这样的构造函数。这两种约束都不会以任何方式暗示另一种。

  

据我所知,这个结构不能有无参数构造函数

该文档中的关键字是“显式”,即您在代码中声明的构造函数。默认构造函数是隐式无参数构造函数,它由编译器为没有显式构造函数定义(带或不带参数)的类型创建。

答案 1 :(得分:1)

通用类或方法的new()约束意味着T必须具有默认构造函数,但不关心Tclass还是{{1} }}