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

101

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

如果不是,为什么下面的代码无法编译?(当我移除 <T> 后它就能编译了)

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

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

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

3个回答

165

在构造函数中,您没有提供类型参数。以下是正确的写法。

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

如果还有一个基于Cell的基类Cell<T>: Cell,那么扩展这个答案会很好。 - Learner

13

如果您需要将类型作为属性:

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

    public Type TheType { get;}
}

9

如果您需要注入该类型的实例:

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接