在泛型类中同时具有"class"和"new()"约束是没有意义的吗?

And*_*i V 5 c# generics constraints

我想知道在定义泛型类时是否有"class"和"new()"约束是否合理.如下例所示:

class MyParanoidClass<T> where T : class, new()
{
 //content
}
Run Code Online (Sandbox Code Playgroud)

两个约束都指定T应该是引用类型.虽然"类"约束并不意味着隐式构造函数存在,但"new()"约束确实需要带有附加公共构造函数定义的"类".

我的最后一个问题是:我在上面的语句中定义泛型类是否有任何好处,或者"new()"是否封装了两个约束?

Dan*_*rth 7

new()并不意味着引用类型,因此:不,class使用时不冗余new().

以下代码演示了:

void Main()
{
    new MyParanoidClass<S>();
}

struct S {}

class MyParanoidClass<T> where T : new()
{
    //content
}
Run Code Online (Sandbox Code Playgroud)

此代码编译,证明new()您不关心是否使用引用或值类型.

  • +1清楚地说明[在文档中](http://msdn.microsoft.com/en-us/library/d5x73970(v = vs.110).aspx). (2认同)