泛型类的默认构造函数的语法是什么?

时间:2012-03-14 11:30:58

标签: c# .net generics

C#中是否禁止为泛型类实现默认构造函数?

如果没有,为什么下面的代码不能编译? (当我删除<T>时,它会编译)

那么为泛型类定义默认构造函数的正确方法是什么?

public class Cell<T> 
{
    public Cell<T>()
    {
    }
}

编译时间错误:错误1无效的标记'('在类,结构或接口成员声明中

3 个答案:

答案 0 :(得分:125)

您没有在构造函数中提供type参数。这就是你应该怎么做的。

public class Cell<T> 
{
    public Cell()
    {
    }
}

答案 1 :(得分:8)

如果您需要Type作为属性:

public class Cell<T>
{
    public Cell()
    {
        TheType = typeof(T);
    }

    public Type TheType { get;}
}

答案 2 :(得分:2)

如果你需要注入一个类型的实例:

public class Cell<T>
{
    public T Thing { get; }

    public Cell(T thing)
    {
        Thing = thing;
    }
}