这个语法在抽象类的声明中意味着什么?

时间:2014-03-10 13:26:45

标签: c#

我认为这是一个简单的问题,但我找不到正确的答案。 这个语法是什么意思?我对这一行末尾的 new()感到困惑:

public abstract class SomeClass<E> : Controller where E : ISomeInterface, new()
{
    //code of the abstract class
}

5 个答案:

答案 0 :(得分:11)

新约束指定泛型类声明中的任何类型参数都必须具有公共无参数构造函数。要使用新约束,类型不能是抽象的。

来自:http://msdn.microsoft.com/en-us/library/sd2w2ew5.aspx

答案 1 :(得分:3)

你宣布:

  • 抽象类SomeClass,取决于类型E;
  • 其中EISomeInterface或任何实现/派生自ISomeInterface的类型;
  • 具有默认的无参数构造函数(new constraint)。

答案 2 :(得分:1)

new()意味着您可以像var e = new E();

那样实例化类

答案 3 :(得分:1)

与课堂摘要无关。它是泛型类型参数的约束,这意味着类型参数应该具有无参数构造函数。

答案 4 :(得分:1)

这意味着SomeClass是一个继承自Controller类的通用抽象类。 泛型类型E被限制为实现接口ISomeInterface并且必须具有构造函数(它应该被初始化)